1. 06 Sep, 2021 2 commits
    • Ben Wagner's avatar
      Extend test thread args lifetime · 6e414d61
      Ben Wagner authored and Akira TAGOH's avatar Akira TAGOH committed
      The argument passed to each thread in test-pthread.c indicates a thread
      number to report when finished. This value is read out by the thread
      into a local variable early in the thread's execution. Currently, the
      address passed as this argument is the address of a loop local. However,
      it is possible that the created thread will not be scheduled to run or
      will not read the argument before the thread creation loop finishes and
      the local is destroyed. This can lead to odd behavior, usually observed
      as multiple threads reporting the same thread_num.
      
      Fix this issue by storing the thread arguments in a parallel array to
      the array of threads. This ensures that the thread arguments are in
      scope as long as the threads themselves.
      
      Discovered with tests/test-pthread with AddressSanitizer enabled.
      6e414d61
    • Ben Wagner's avatar
      Free local FcCache lock on contention · efc71a3c
      Ben Wagner authored and Akira TAGOH's avatar Akira TAGOH committed
      If two threads attempt to create the FcCache lock in lock_cache at the
      same time, both threads may create and initialize a local FcMutex. One
      thread will atomically make cache_lock point to its FcMutex. The other
      thread currently calls FcMutexFinish on the local lock, but does not
      free it. Change this behavior to free the unused lock.
      
      Found with test/test-pthread on an LeakSanitizer enabled build.
      efc71a3c
  2. 31 Aug, 2021 1 commit
    • Ben Wagner's avatar
      Add memory order constraints to C11 atomics · 6e687630
      Ben Wagner authored
      Reduce the strength of the C11 atomics from memory_order_seq_cst to the
      actually required memory order constraints for each operation. In
      addition to reflecting the already documented memory order constraints,
      this should allow for better code generation.
      6e687630
  3. 25 Aug, 2021 1 commit
  4. 24 Aug, 2021 2 commits
    • Akira TAGOH's avatar
      Reflect matching results to binding in FcPattern · c7891755
      Akira TAGOH authored
      This change allows applications to see what property was matched perfectly
      and help to filter out for their needs.
      
      Fixes #294
      c7891755
    • Akira TAGOH's avatar
      Bump the cache version to 8 · 5d84745e
      Akira TAGOH authored
      Bump the cache version to avoid unexpected behavior in
      older version of fontconfig.
      
      There was no real incompatible features introduced in a cache.
      But the older version of fontconfig can't deal with variable fonts
      and then it failed. To avoid this breakage, you may want to choose
      one of options like:
      
      1) Applying this change to fontconfig in host and remove all the
      fontconfig caches and then regenerate them by fc-cache linked with
      older one and new one. or simply run applications.
      You'll see two versions of caches in the cache directories.
      
      2) Remove variable fonts on system and remove all the fontconfig
      caches too. then regenerate caches. You'll still see one version of
      caches there but without the entries of variable fonts.
      
      After that, the problem should be gone.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1981500
      5d84745e
  5. 18 Aug, 2021 1 commit
  6. 20 Jul, 2021 3 commits
  7. 19 Jul, 2021 1 commit
    • Ryan Schmidt's avatar
      Restore fcatomic compatibility with Mac OS X 10.4. · 3a7ad1b4
      Ryan Schmidt authored and Akira TAGOH's avatar Akira TAGOH committed
      Reverts the part of 6def6616 that
      removed the fc_atomic_ptr_cmpexch compatibility code for systems earlier
      than Mac OS X 10.5.
      
      Reverts the part of 447b9ccc that moved
      the definition of fc_atomic_ptr_get into the Mac OS X > 10.4 block. That
      code is still needed on 10.4 and is implemented using functions that are
      available on 10.4.
      
      Compare against MAC_OS_X_VERSION_MIN_REQUIRED using a number not a
      constant because the constant is not available on earlier SDKs.
      3a7ad1b4
  8. 14 Jul, 2021 2 commits
  9. 08 Jul, 2021 2 commits
  10. 06 Jul, 2021 1 commit
  11. 28 Jun, 2021 3 commits
    • Akira TAGOH's avatar
      Bump version to 2.13.94 · e291fda7
      Akira TAGOH authored
      e291fda7
    • Akira TAGOH's avatar
      Fix score evaluation for multiple values in properties · da1c9f7a
      Akira TAGOH authored
      Sometimes fonts has multiple values in family and sub-family in order to unify
      other variants into one. they basically make difference in sub-family though,
      they also still have standalone family and sub-family. in that case, sub-family is
      likely to be Regular.
      
      fontconfig couldn't recognize the difference between :family=Foo:style=Regular
      and :family=Foo Caption:style=Regular for example because fontconfig didn't
      give different score on matching result for the position of multiple values in
      a cache.
      Thus, when querying a font like :family=Foo:style=Regular may results
      :family=Foo Caption:style=Regular. (see the test case for more details)
      
      To fix this situation, giving different score according to the position
      of multiple values in a cache as well as the position of multiple values
      in a query.
      
      Fixes #283
      da1c9f7a
    • Akira TAGOH's avatar
      Revert constructing fullname property from family and style properties · d62d984e
      Akira TAGOH authored
      This seems making a regression in Java. we will revisit this issue later.
      
      Fixes #277
      d62d984e
  12. 25 Jun, 2021 1 commit
  13. 09 Apr, 2021 1 commit
  14. 30 Mar, 2021 1 commit
  15. 26 Mar, 2021 1 commit
  16. 25 Mar, 2021 1 commit
  17. 03 Mar, 2021 3 commits
  18. 02 Mar, 2021 1 commit
    • Akira TAGOH's avatar
      Overwrite symlinks for config files · 615e2cb8
      Akira TAGOH authored
      In Makefile, we are trying to remove old symlinks first and then create a symlink.
      do the same thing in meson too.
      
      Also, the line of the exception handling for FileExistsError is meaningless
      as the above line is taking care of it instead and we shouldn't ignore it if
      os.remove and os.symlink doesn't work somehow.
      
      Fixes #275
      615e2cb8
  19. 18 Feb, 2021 1 commit
    • Tim-Philipp Müller's avatar
      meson: fix subproject build regression · dba3287b
      Tim-Philipp Müller authored and Akira TAGOH's avatar Akira TAGOH committed
      commit ae9ac2a1 from !165 introduced a regression when
      fontconfig is built as a subproject. In that case we
      would fail to correctly construct the path to the root
      build dir where the meson-info subdirectory resides,
      instead looking for it in the fontconfig subproject
      subdir. This would result in
      FAILED: subprojects/fontconfig/src/fcobjshash.gperf
      errors in the cutout.py script.
      
      Instead use the @BUILD_ROOT@ substitution to get
      to the build root which will work correctly in
      either scenario.
      dba3287b
  20. 16 Feb, 2021 1 commit
    • Ben Wagner's avatar
      Fix stack use after scope in FcConfigCompareValue · ba15d41b
      Ben Wagner authored
      Discovered by AddressSanitizer. When left_o and right_o are promoted the
      promoted values are placed on the stack in FcValuePromotionBuffer.
      The FcValuePromotionBuffers must then continue to be in scope while
      left_o and right_o point into their content. In 9d4e5d0f the
      FcValuePromotionBuffers were moved into the incorrect scope, leaving
      left_o and right_o pointing into an object whose lifetime has ended.
      This is similar to left and right which appear to have a smaller scope
      but are actually required to be in the larger scope.
      
      Correct this by moving the FcValuePromotionBuffers to the proper scope.
      Leave the left and right FcValues where they are since they are in the
      correct scope already.
      
      This also adds to test-conf the ability to create charset, langset,
      range, and matrix in patterns. This allows for a simple test which fails
      under AddressSanitizer before this change and passes after.
      ba15d41b
  21. 15 Feb, 2021 2 commits
  22. 30 Jan, 2021 1 commit
  23. 28 Jan, 2021 1 commit
  24. 26 Jan, 2021 1 commit
  25. 20 Jan, 2021 1 commit
  26. 15 Jan, 2021 1 commit
  27. 13 Jan, 2021 1 commit
  28. 08 Jan, 2021 2 commits
    • Tim-Philipp Müller's avatar
      ci: add meson android aarch64 build · 643c3f1e
      Tim-Philipp Müller authored and Akira TAGOH's avatar Akira TAGOH committed
      Passing -Wno-pointer-bool-conversion in cross file
      to suppress compiler warning:
      
      src/fcfreetype.c:1373:11: address of array 'os2->achVendID' will always evaluate to 'true'
      643c3f1e
    • Tim-Philipp Müller's avatar
      fcformat: fix compiler warnings with clang on Android · 8657c081
      Tim-Philipp Müller authored and Akira TAGOH's avatar Akira TAGOH committed
      fcformat.c:762:44: warning: expression which evaluates to zero treated as a null pointer constant of type 'FcChar8 *' (aka 'unsigned char *') [-Wnon-literal-null-conversion]
                      if (!FcNameUnparseValue (buf, &l->value, '\0'))
                                                               ^~~~
      fcformat.c:769:38: warning: expression which evaluates to zero treated as a null pointer constant of type 'FcChar8 *' (aka 'unsigned char *') [-Wnon-literal-null-conversion]
                  FcNameUnparseValueList (buf, l, '\0');
                                                  ^~~~
      8657c081