src/hb-buffer.cc


Log

Author Commit Date CI Message
Behdad Esfahbod 4b5a81f1 2021-08-25T15:20:54 [buffer] Fix hb_buffer_append() pre/post-context logic Part of https://github.com/harfbuzz/harfbuzz/pull/3150
Khaled Hosny 430224b1 2021-08-16T15:40:47 [buffer] Handle pre/post-context in buffer_append Fixes https://github.com/harfbuzz/harfbuzz/issues/1843
Behdad Esfahbod 09c3b82f 2021-07-29T17:49:10 [buffer] When shifting forward, leave no gap Trying to see if this fixes the fuzzer issue: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36236
Behdad Esfahbod 3e266e5f 2021-07-12T17:30:26 [buffer] Update comments
Behdad Esfahbod 3807061d 2021-07-12T17:02:03 [ot-layout] Don't remove_output() before reverse substitution No need anymore, because of new swap_buffers() semantics. Just assert instead.
Behdad Esfahbod 10a9960f 2021-07-12T17:09:03 [buffer] Restructure swap_buffers() Is more of a "commit" operation now. Will rename when ready.
Behdad Esfahbod 05c17787 2021-07-12T16:55:08 [buffer] Rewind cursor in clear_output()
Behdad Esfahbod 69310f14 2021-07-09T17:24:29 [buffer] Change nil buffer have_output to false Seems like a historical artefact that it was true.
Behdad Esfahbod 2337f0d0 2021-07-08T10:58:50 Internally use hb_malloc/.../hb_free instead of malloc/.../free Redefining those stock names as macros was conflicting with gcc 10 headers. Fixes https://github.com/harfbuzz/harfbuzz/issues/3044
Behdad Esfahbod 93e6a9bc 2021-06-15T15:38:49 Revert "Remove unneeded buffer clear_output / remove_output calls" This reverts commit 06175b71433bc42edc07d342e6354035e37fb5fd. One of the sanitizers is failing. Pushing again as PR to debug. I have suspicions.
Behdad Esfahbod 06175b71 2021-06-15T14:33:27 Remove unneeded buffer clear_output / remove_output calls Made sure clear_output is always paired with swap_buffers. Trying to see if we can move towards RAII-like buffer iterators instead of the buffer keeping an iterator internally.
Behdad Esfahbod c61ce962 2021-06-10T17:33:29 [buffer] In hb_buffer_get_positions(), return NULL if inside message callback As discussed in https://github.com/harfbuzz/harfbuzz/issues/2468#issuecomment-645666066 Part of fixing https://github.com/harfbuzz/harfbuzz/issues/2468
Behdad Esfahbod 34a1204f 2021-03-15T14:39:06 [buffer] HB_NODISCARD output_glyph() Also, generalize and use replace_glyphs() in morx where output_glyph() was used in a loop.
Behdad Esfahbod b05e5d9a 2021-03-15T14:08:08 [buffer] HB_NODISCARD next_glyphs()
Behdad Esfahbod 05d2d37f 2021-03-15T13:43:29 [buffer] HB_NODISCARD ensure()
Behdad Esfahbod 906c9928 2021-03-15T13:13:45 [buffer] Return success status from buffer ops that can fail Previous error-handling philosophy was that user doesn't need to immediately know whether operation failed. But as can be seen after we added malloc-failing fuzzing, there's just so many places in the code that a failure of these operations needs to be mitigated before further operations. So I'm moving towards returning success here, and possibly making it nodiscard.
Behdad Esfahbod 2d39031f 2020-06-28T20:48:48 [buffer/set/map] Move immutable check only to C API boundary The immutable objects are a concept only enforced by the C API. So move checks only to that region. This does assume that the rest of the code is careful not getting into these internal methods on immutable objects, which something we do, but have no way of enforcing (currently). .
Behdad Esfahbod 21433fa5 2020-06-28T20:46:02 m[buffer] In hb_buffer_append() don't change until allocation success
Behdad Esfahbod 3b91e0b5 2020-06-28T20:33:54 m[buffer] Rename internal variable
Behdad Esfahbod 9fcba109 2020-06-28T20:30:39 [buffer] Make swap_buffers() copy rest
Khaled Hosny 9936490c 2020-12-31T00:19:29 [docs] Invalid use of "optional" annotation It is valid only for out and inout parameters. Fixes https://github.com/harfbuzz/harfbuzz/issues/1787
Khaled Hosny 2fdab788 2020-12-30T23:44:30 [docs] Complete hb-buffer docs a bit
Khaled Hosny cb319f0d 2020-12-24T21:47:05 [docs] Add some missing annotations to hb-buffer.cc
Khaled Hosny f88e845f 2020-12-24T21:28:37 [docs] Minor fixes
Nathan Willis e8de26e1 2019-04-21T20:31:54 [docs] Add gtkdoc comments to hb-buffer
Khaled Hosny 71a3b54f 2020-12-23T15:33:15 2.7.3
Behdad Esfahbod 77e704d1 2020-10-15T02:02:04 [buffer] Add assert_unicode()/assert_glyphs() and use internally
Behdad Esfahbod 3232e6f2 2020-10-15T00:20:17 [buffer] Add hb_buffer_has_positions() Fixes https://github.com/harfbuzz/harfbuzz/issues/2716
Ebrahim Byagowi 48ad7459 2020-07-29T08:09:08 [ENOMEM] Fix buffer's content check logic So now rest of shape fuzzer also can be enabled. Fixes #2571
Ebrahim Byagowi d0e2addd 2020-07-18T22:14:52 minor
Ebrahim Byagowi 2dda6dd7 2020-04-20T14:12:45 minor, tweak spacing turn 8 spaces to tab, add space before Null/Crap
Garret Rieger 14a7b6f1 2020-02-26T15:09:04 Set hb_buffer_t to use array_t.reverse().
Evgeniy Reizner b79ceac3 2019-12-15T16:50:01 Prefer UINT_MAX instead of uint overflow. Also, prefer HB_FEATURE_GLOBAL_START and HB_FEATURE_GLOBAL_END.
Evgeniy Reizner b618e0ae 2019-12-15T16:26:50 Remove non-breaking spaces from comments. `0xC2A0` was used, for some reasons. It's not really a problem, but Qt Creator constatly trying to replace them with regular spaces, so I have to edit those files separately.
Evgeniy Reizner 780d640c 2019-12-15T16:11:37 Remove unnecessary check in hb_buffer_t::set_masks. Bounds are already checked by the caller. Closes #2073
Behdad Esfahbod 5fddc5f1 2019-11-20T13:07:26 Use foreach_cluster
Behdad Esfahbod 029775bc 2019-10-09T11:00:09 [buffer] Minor; improve HB_NO_BUFFER_MESSAGE
Ebrahim Byagowi 670fec23 2019-10-10T09:21:08 Minor, add a zero length tolerant memset, hb_memset
Ebrahim Byagowi e6909ee5 2019-09-18T22:12:25 minor
Ebrahim Byagowi bfb155a5 2019-09-18T00:44:52 Don't call memset when length is zero Fixes this -fno-sanitize-recover=undefined check, /buffer/positions/empty: hb-buffer.cc:327:11: runtime error: null pointer passed as argument 1, which is declared to never be null /usr/include/string.h:60:62: note: nonnull attribute specified here #0 0x4cf31c in hb_buffer_t::clear_positions() /home/user/code/harfbuzz/src/hb-buffer.cc:327:3 #1 0x4d4dd4 in hb_buffer_get_glyph_positions /home/user/code/harfbuzz/src/hb-buffer.cc:1418:13 #2 0x4cb553 in test_buffer_positions /home/user/code/harfbuzz/test/api/test-buffer.c:305:3 #3 0x7f324187bf49 (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x72f49) #4 0x7f324187be7a (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x72e7a) #5 0x7f324187be7a (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x72e7a) #6 0x7f324187c121 in g_test_run_suite (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x73121) #7 0x7f324187c140 in g_test_run (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x73140) #8 0x4c8bd3 in hb_test_run /home/user/code/harfbuzz/test/api/./hb-test.h:88:10 #9 0x4c8bd3 in main /home/user/code/harfbuzz/test/api/test-buffer.c:884:10 #10 0x7f324086db96 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310 #11 0x41e919 in _start (/home/user/code/harfbuzz/test/api/test-buffer+0x41e919)
Ebrahim Byagowi a0b4ac4d 2019-08-24T17:57:14 Turn 8 spaces to tab across the project According to the current code style of the project
Behdad Esfahbod 7f3b409e 2019-06-20T14:24:43 Fix build with -O0 message_impl was not defined. That causes trouble if compiler didn't optimize the unreachable call out...
Behdad Esfahbod eb9798ef 2019-06-18T13:29:55 [config] Dont' compile buffer message API if HB_NO_BUFFER_MESSAGE Part of https://github.com/harfbuzz/harfbuzz/issues/1652
Behdad Esfahbod c7439d4e 2019-06-05T12:13:49 Slightly massage buffer-messaging commit Saves a few bytes.
Ebrahim Byagowi 815f002b 2019-06-05T10:38:06 Don't use vsnprintf when HB_NO_BUFFER_MESSAGE is defined
Behdad Esfahbod 41248cce 2019-05-07T20:54:31 Remove MIN/MAX in favor of hb_min/hb_max
Ebrahim Byagowi e4120085 2018-12-17T21:31:01 Remove redundant void from C++ sources (#1486)
Ebrahim Byagowi 7ee5c523 2018-12-12T15:14:37 minor style fix, use void in methods on no argument
Behdad Esfahbod 93ef20a8 2018-11-03T15:03:06 Replace most uses of is_inert with is_immutable
Behdad Esfahbod cf5fa57f 2018-10-27T04:50:38 [docs] Change section titles again I think I like the uniform "hb-*" more.
Behdad Esfahbod 5dd86aa3 2018-10-27T04:28:40 [docs] Rename section titles to object names More useful.
Behdad Esfahbod 00cf4e5e 2018-10-27T04:07:33 [docs] Fill in some sections
Behdad Esfahbod 8d304ef7 2018-10-16T19:04:48 [utf] Add UTF16-BE and UTF32-BE
Behdad Esfahbod 3d9a0306 2018-10-18T05:58:17 2.0.0
Behdad Esfahbod 2e7c7165 2018-10-16T18:35:03 [buffer] Add an assert See if it helps debugging https://bugs.chromium.org/p/chromium/issues/detail?id=895117
David Corbett a03f5f4d 2017-12-28T22:59:29 Replace "ISO 639" with "BCP 47" `hb_language_from_string` accepts not only ISO 639 but also BCP 47. Not all ISO 639 codes are valid BCP 47 tags but the function does not accept overlong language subtags anyway.
Behdad Esfahbod e42cd58c 2018-10-07T20:46:11 Rename invisible_codepoint to invisible_glyph in API Deleted recently added API: hb_buffer_set_invisible_codepoint() hb_buffer_get_invisible_codepoint() hb-shape / hb-view --invisible-codepoint New API: hb_buffer_set_invisible_glyph() hb_buffer_get_invisible_glyph() hb-shape / hb-view --invisible-glyph Fixes https://github.com/harfbuzz/harfbuzz/issues/1216
Behdad Esfahbod 14ebf8af 2018-10-07T20:35:06 [buffer] Improve shift_forward() "Improve" is a strong word in this case though, I understand.
Behdad Esfahbod 71b65eb2 2018-10-07T18:41:52 Add API for setting invisible-codepoint Fixes https://github.com/harfbuzz/harfbuzz/issues/1216 New API: hb_buffer_set_invisible_codepoint() hb_buffer_get_invisible_codepoint() hb-shape / hb-view --invisible-codepoint
Behdad Esfahbod 2a6f1521 2018-10-03T20:09:14 [buffer] Inline some more
Behdad Esfahbod ba0f0f15 2018-09-30T03:49:52 Document setlocale() threadsafety issue "Fixes" //github.com/harfbuzz/harfbuzz/issues/1191
Behdad Esfahbod 55bae682 2018-09-24T10:43:06 [docs] A few improvements If we wrote just this much every day...
Behdad Esfahbod 606bf574 2018-09-16T19:33:48 Revert forcing use of single-parameter static_assert() Some clang versions define static_assert as a macro apparently, so we cannot redefine it... This reverts commit 94bfea0ce6a7b4d5641c198d50751748a353df11. This reverts commit 4e62627831e7457ed60ff87712570065b14b200a.
Behdad Esfahbod 4e626278 2018-09-16T18:09:36 Enforce single-param static_assert() only So we don't accidentally break it again.
Behdad Esfahbod c77ae408 2018-08-25T22:36:36 Rename hb-*private.hh to hb-*.hh Sorry for the noise, downstream custom builders. Please adjust.
Behdad Esfahbod f0ef096b 2018-08-13T10:30:41 Don't add reference in get_unicode_funcs() functions Users don't expect a new reference returned from a get() function. Indeed, all users of that API I foud where NOT destroying the reference. Just change the implementations to NOT return a reference. This applies to the following APIs: hb_unicode_funcs_get_default() hb_glib_get_unicode_funcs() hb_icu_get_unicode_funcs() Fixes https://github.com/harfbuzz/harfbuzz/issues/1134
Behdad Esfahbod 3506672c 2018-08-06T06:17:48 Port _nil objects to Null() machinery Finally, unified!
Behdad Esfahbod bddeb2b1 2018-07-10T14:12:37 Minor renamings of internal inline functions
Behdad Esfahbod 7185b273 2018-05-31T20:03:00 Rename in_error to !successful Towards possibly using Null pool for some nil objects.
Behdad Esfahbod f673cfbd 2018-05-07T13:58:32 Support scripts that are written both LTR and RTL Right now only Old Italic is marked as such. Fixes https://github.com/harfbuzz/harfbuzz/issues/1000
Behdad Esfahbod cc1e0840 2018-02-06T10:20:48 [buffer] Tweak diff re glyph_flags again We expect the buffer to have no flags that the reference doesn't... Meh. Makes MORX tests pass now. Need to better define the behavior.
Ebrahim Byagowi d49ae515 2018-02-06T13:48:10 Fix hb-buffer logic error
Behdad Esfahbod 54e6efad 2018-02-04T14:58:02 [aat] Fix unsafe-to-break At any position, if state is not zero, mark unsafe-to-break before, unless we can reason it safe. At any position, if there's an action entry for end-of-text, mark unsafe to break. Also changes buffer diff impl to allow for flag differences as long as the buffer glyph flags are superset of reference glyph flags. With this, all MORX tests pass.
Behdad Esfahbod baf7779d 2017-11-14T21:53:48 Limit how much recursion GSUB/GPOS does This only counts recursions right now. Good start. Hopefully... Fixes https://github.com/behdad/harfbuzz/issues/429
ebraminio 102f5ead 2017-11-01T02:10:18 Enable PSVita (arm-none-eabi) compile again and add it to CI (#594)
Behdad Esfahbod dbdbfe3d 2017-10-15T12:11:08 Use nullptr instead of NULL
Behdad Esfahbod c3448e8d 2017-10-15T12:02:00 Use static_assert instead of custom ASSERT_STATIC
Behdad Esfahbod d03f11f2 2017-09-04T20:14:13 Fix buffer_diff for empty buffers If buffers are empty, content type should be ignored. This fixes last of the failing tests: fuzzed.tests. Green again!
Behdad Esfahbod 099472e0 2017-08-30T16:45:06 hb_buffer_diff() tweak I like to have a mode where CONTAINS_NOTDEF and CONTAINS_DOTTEDCIRCLE are not returned. Abused a value of -1 for that. hb-shape now uses it. Fixes two of the six tests failing with --verify in test/shaping/run-tests.sh.
Behdad Esfahbod 224d20e4 2017-08-23T14:41:48 [docs] Minor
Behdad Esfahbod b2dd0c1c 2017-08-23T13:12:54 Add hb_glyph_info_get_glyph_flags() New API.
Behdad Esfahbod 3e8f4f14 2017-08-22T17:56:25 Rename HB_BUFFER_DIFF_FLAG_MASK_MISMATCH to HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH
Emil A Eklund (eae) 91770e1c 2017-08-15T16:25:18 Fix signed/unsigned warning (#522) Change hb_buffer_diff to explicitly cast result of abs to unsigned when comparing with position_fuzz to avoid unsafe signed/unsigned comparions warnings on windows.
Jonathan Kew 331d66c7 2014-07-19T23:09:09 Add function to compare two buffers Based on patch from Jonathan Kew. Needs more cleaning up and documentation. New API: hb_buffer_diff_flags_t hb_buffer_diff()
Behdad Esfahbod 05fabbd0 2017-08-11T19:51:06 [unsafe-to-break] Towards verifying unsafe-to-break in --verify We break and shape fragments and reconstruct shape result from them. Remains to compare to original buffer. Going to add some buffer comparison API and use here, instead of open-coding.
Behdad Esfahbod 6ce25f57 2017-08-11T19:31:05 Fix hb_buffer_append() Ouch!
Behdad Esfahbod 1c17c2bd 2017-08-11T19:06:07 [unsafe-to-break] Copy flag to all glyphs in a cluster Makes consumption easier.
Behdad Esfahbod ec104e59 2017-08-11T18:24:27 [unsafe-to-break] Mark unsafe is cluster merging is disabled We were relying on cluster merges not requiring unsafe flagging because they get merged. If cluster level requests no merging, then we flag unsafe when merge would have happened.
Behdad Esfahbod 39a97494 2017-08-11T15:52:06 New API: hb_buffer_append()
Behdad Esfahbod e2a2b5b2 2017-08-10T20:10:12 [unsafe-to-break] Be careful with flag propagation when merging clusters
Behdad Esfahbod f2868c20 2017-08-10T19:58:05 Set mask to 0, instead of 1, by default This shouldn't matter.
Behdad Esfahbod a043c99f 2016-05-04T19:51:22 [unsafe-to-break] Simplify logic Always use the algorithm for non-monotone case. It's more robust.
Behdad Esfahbod 91ce0c45 2016-05-05T16:13:03 [safe-to-break] Fix logic when there is no out-buffer
Behdad Esfahbod 40bd7e9a 2016-05-02T14:47:45 [unsafe-to-break] Add UNSAFE_TO_BREAK flag Not all shapers code is updated to set this properly. GSUB and Arabic shaper are updated. GPOS and other shapers are NOT. Fixes https://github.com/behdad/harfbuzz/issues/224
Ebrahim Byagowi 3b0e47ca 2017-06-19T14:47:09 Fix arm-none-eabi build (fixes #451) (#496)
Behdad Esfahbod 6363d7df 2016-07-20T01:43:56 Clean up buffer area when rewinding Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=614647 If allocation fails, we might be leaving junk behind. At least clear it up.
Behdad Esfahbod 70e72e5f 2016-06-28T21:00:37 [gobject] Fix a few warnings Part of https://github.com/behdad/harfbuzz/issues/277
Behdad Esfahbod 0c7fb741 2016-02-25T14:40:09 Speed up buffer variable allocation sanity check This makes defining HB_NDEBUG much less relevant, to the point of irrelevance. Sorry about all the fuss in previous release!
Behdad Esfahbod 91dd1156 2016-02-25T13:56:47 Add HB_NDEBUG API changes: - If NDEBUG is defined, define HB_NDEBUG - Disable costlier sanity checks if HB_NDEBUG is defined. In 1.2.3 introduced some code to disable costly sanity checks if NDEBUG is defined. NDEBUG, however, disables all assert()s as well. With HB_NDEBUG, one can disable costlier checks but keep assert()s. I'll probably add a way to define HB_NDEBUG automatically in release tarballs. But for now, production systems that do NOT define NDEBUG, are encouraged to define HB_NDEBUG for our build.
Behdad Esfahbod 98816502 2016-02-25T12:23:02 Disable internal buffer variable bookkeeping in NDEBUG builds Saves some sweet time and binary size!