Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(181)

Side by Side Diff: third_party/harfbuzz-ng/src/hb-buffer.cc

Issue 2163983005: Roll HarfBuzz to 1.3.0 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/harfbuzz-ng/README.chromium ('k') | third_party/harfbuzz-ng/src/hb-common.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright © 1998-2004 David Turner and Werner Lemberg 2 * Copyright © 1998-2004 David Turner and Werner Lemberg
3 * Copyright © 2004,2007,2009,2010 Red Hat, Inc. 3 * Copyright © 2004,2007,2009,2010 Red Hat, Inc.
4 * Copyright © 2011,2012 Google, Inc. 4 * Copyright © 2011,2012 Google, Inc.
5 * 5 *
6 * This is part of HarfBuzz, a text shaping library. 6 * This is part of HarfBuzz, a text shaping library.
7 * 7 *
8 * Permission is hereby granted, without written agreement and without 8 * Permission is hereby granted, without written agreement and without
9 * license or royalty fees, to use, copy, modify, and distribute this 9 * license or royalty fees, to use, copy, modify, and distribute this
10 * software and its documentation for any purpose, provided that the 10 * software and its documentation for any purpose, provided that the
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 * passed hb_shape(), and after shaping they hold the output glyphs. 45 * passed hb_shape(), and after shaping they hold the output glyphs.
46 **/ 46 **/
47 47
48 /** 48 /**
49 * hb_segment_properties_equal: 49 * hb_segment_properties_equal:
50 * @a: first #hb_segment_properties_t to compare. 50 * @a: first #hb_segment_properties_t to compare.
51 * @b: second #hb_segment_properties_t to compare. 51 * @b: second #hb_segment_properties_t to compare.
52 * 52 *
53 * Checks the equality of two #hb_segment_properties_t's. 53 * Checks the equality of two #hb_segment_properties_t's.
54 * 54 *
55 * Return value: (transfer full): 55 * Return value:
56 * %true if all properties of @a equal those of @b, false otherwise. 56 * %true if all properties of @a equal those of @b, false otherwise.
57 * 57 *
58 * Since: 0.9.7 58 * Since: 0.9.7
59 **/ 59 **/
60 hb_bool_t 60 hb_bool_t
61 hb_segment_properties_equal (const hb_segment_properties_t *a, 61 hb_segment_properties_equal (const hb_segment_properties_t *a,
62 const hb_segment_properties_t *b) 62 const hb_segment_properties_t *b)
63 { 63 {
64 return a->direction == b->direction && 64 return a->direction == b->direction &&
65 a->script == b->script && 65 a->script == b->script &&
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 return true; 176 return true;
177 } 177 }
178 178
179 bool 179 bool
180 hb_buffer_t::shift_forward (unsigned int count) 180 hb_buffer_t::shift_forward (unsigned int count)
181 { 181 {
182 assert (have_output); 182 assert (have_output);
183 if (unlikely (!ensure (len + count))) return false; 183 if (unlikely (!ensure (len + count))) return false;
184 184
185 memmove (info + idx + count, info + idx, (len - idx) * sizeof (info[0])); 185 memmove (info + idx + count, info + idx, (len - idx) * sizeof (info[0]));
186 if (idx + count > len)
187 {
188 /* Under memory failure we might expose this area. At least
189 * clean it up. Oh well... */
190 memset (info + len, 0, (idx + count - len) * sizeof (info[0]));
191 }
186 len += count; 192 len += count;
187 idx += count; 193 idx += count;
188 194
189 return true; 195 return true;
190 } 196 }
191 197
192 hb_buffer_t::scratch_buffer_t * 198 hb_buffer_t::scratch_buffer_t *
193 hb_buffer_t::get_scratch_buffer (unsigned int *size) 199 hb_buffer_t::get_scratch_buffer (unsigned int *size)
194 { 200 {
195 have_output = false; 201 have_output = false;
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 425
420 memmove (out_info + out_len, info + idx, count * sizeof (out_info[0])); 426 memmove (out_info + out_len, info + idx, count * sizeof (out_info[0]));
421 idx += count; 427 idx += count;
422 out_len += count; 428 out_len += count;
423 } 429 }
424 else if (out_len > i) 430 else if (out_len > i)
425 { 431 {
426 /* Tricky part: rewinding... */ 432 /* Tricky part: rewinding... */
427 unsigned int count = out_len - i; 433 unsigned int count = out_len - i;
428 434
435 /* This will blow in our face if memory allocation fails later
436 * in this same lookup... */
429 if (unlikely (idx < count && !shift_forward (count + 32))) return false; 437 if (unlikely (idx < count && !shift_forward (count + 32))) return false;
430 438
431 assert (idx >= count); 439 assert (idx >= count);
432 440
433 idx -= count; 441 idx -= count;
434 out_len -= count; 442 out_len -= count;
435 memmove (info + idx, out_info + out_len, count * sizeof (out_info[0])); 443 memmove (info + idx, out_info + out_len, count * sizeof (out_info[0]));
436 } 444 }
437 445
438 return true; 446 return true;
(...skipping 1362 matching lines...) Expand 10 before | Expand all | Expand 10 after
1801 } 1809 }
1802 } 1810 }
1803 1811
1804 bool 1812 bool
1805 hb_buffer_t::message_impl (hb_font_t *font, const char *fmt, va_list ap) 1813 hb_buffer_t::message_impl (hb_font_t *font, const char *fmt, va_list ap)
1806 { 1814 {
1807 char buf[100]; 1815 char buf[100];
1808 vsnprintf (buf, sizeof (buf), fmt, ap); 1816 vsnprintf (buf, sizeof (buf), fmt, ap);
1809 return (bool) this->message_func (this, font, buf, this->message_data); 1817 return (bool) this->message_func (this, font, buf, this->message_data);
1810 } 1818 }
OLDNEW
« no previous file with comments | « third_party/harfbuzz-ng/README.chromium ('k') | third_party/harfbuzz-ng/src/hb-common.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698