Olivier Berten | 30 Aug 16:07 2014
Picon

Verbose shaping process information

Hi!

Is there a way to see what Harbuzz is doing step by step in order to
debug font features?

Something like:
Input string: <U+xxxx, U+yyyy, U+zzzz>
Requested features: ss01
Using XXXX engine
Reordering string: <U+xxxx, U+wwww, U+zzzz, U+yyyy>
Switching to glyphs level: <unixxxx, uniwwww, unizzzz, uniyyyy>
Applying 'pref' (1 substitution): <unixxxx, uniwwww, unizzzz_alt, uniyyyy>
etc.

Yours,

Olivier
Travis CI | 25 Aug 18:59 2014

Fixed: behdad/harfbuzz#406 (master - 22f0de5)

behdad / harfbuzz (master)
Build #406 was fixed.
1 minute and 36 seconds
Behdad Esfahbod 22f0de5 Changeset →
  Fix build

Would you like to test your private code?

Travis Pro could be your new best friend!

<div>
    <div>
      <table class="repository"><tr>
<td><span><a href="http://clicks.travis-ci.org/track/click/30007208/travis-ci.org?p=eyJzIjoibnBva19rNVJpUkxXc0hQRVlfM2dTUUM3RXVNIiwidiI6MSwicCI6IntcInVcIjozMDAwNzIwOCxcInZcIjoxLFwidXJsXCI6XCJodHRwczpcXFwvXFxcL3RyYXZpcy1jaS5vcmdcXFwvYmVoZGFkXFxcL2hhcmZidXp6XCIsXCJpZFwiOlwiMmYzNTNlZmMzMjMwNDZiMWEwMDBmNGZkMGQyNDYyMTZcIixcInVybF9pZHNcIjpbXCJjMDViODE3ZjVlN2ZjYTlmMTE3ZTBhOWE1OWZmMjc0OThmN2NjN2QwXCJdfSJ9">behdad / harfbuzz</a> (<a href="http://clicks.travis-ci.org/track/click/30007208/github.com?p=eyJzIjoiRnNwczhPX1AzamZoWnhCVFBxa3pobWV3MkEwIiwidiI6MSwicCI6IntcInVcIjozMDAwNzIwOCxcInZcIjoxLFwidXJsXCI6XCJodHRwczpcXFwvXFxcL2dpdGh1Yi5jb21cXFwvYmVoZGFkXFxcL2hhcmZidXp6XFxcL3RyZWVcXFwvbWFzdGVyXCIsXCJpZFwiOlwiMmYzNTNlZmMzMjMwNDZiMWEwMDBmNGZkMGQyNDYyMTZcIixcInVybF9pZHNcIjpbXCIzMDVjM2I2NTk5ZDZhMDI1NDk4NGQ1MGVjMGUyZTc5Y2UxZTdmODM2XCJdfSJ9">master</a>)</span></td>
        </tr></table>
<div class="success">
        <div class="content">
          <table>
<tr>
<td><div class="status-image"></div></td>
                <td class="build-message"><span><a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=2f353efc323046b1a000f4fd0d246216&amp;url=https%3A%2F%2Ftravis-ci.org%2Fbehdad%2Fharfbuzz%2Fbuilds%2F33509129&amp;url_id=5ca76ac97d9bcaa67cb11f4e8db47cf794849a4b">Build #406 was fixed.</a></span></td>
                <td align="right" class="time">
<div class="stop-watch"></div> <span>1 minute and 36 seconds</span>
</td>
              </tr>
<tr>
<td class="profile-image"></td>
                <td class="grey">Behdad Esfahbod</td>
                <td align="right" class="grey">
<a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=2f353efc323046b1a000f4fd0d246216&amp;url=https%3A%2F%2Fgithub.com%2Fbehdad%2Fharfbuzz%2Fcommit%2F22f0de5025aeeef4c8b3ca876d291d4c8e558d94&amp;url_id=50db29b0723faf8c570d72e3c46ff7db70831a17">22f0de5</a> <a href="http://clicks.travis-ci.org/track/click/30007208/github.com?p=eyJzIjoibll2cGQ0UkRDZ3NtVTdVVkhOZ05ObmZtdzVzIiwidiI6MSwicCI6IntcInVcIjozMDAwNzIwOCxcInZcIjoxLFwidXJsXCI6XCJodHRwczpcXFwvXFxcL2dpdGh1Yi5jb21cXFwvYmVoZGFkXFxcL2hhcmZidXp6XFxcL2NvbXBhcmVcXFwvZDQ1N2UzZjBmZjliLi4uMjJmMGRlNTAyNWFlXCIsXCJpZFwiOlwiMmYzNTNlZmMzMjMwNDZiMWEwMDBmNGZkMGQyNDYyMTZcIixcInVybF9pZHNcIjpbXCJhMjc2YWFhMTE5NDdiZjY4MTY1Yzg0YWQ0ZDFjZDg2Y2YwZDBjMTc2XCJdfSJ9">Changeset &rarr;</a>
</td>
              </tr>
<tr>
<td>&nbsp;</td>
                <td class="grey" colspan="2">Fix build</td>
              </tr>
</table>
</div>
      </div>

      <table border="0" class="footer"><tr>
<td>
            </td>
          <td class="grey">
            <a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=2f353efc323046b1a000f4fd0d246216&amp;url=http%3A%2F%2Fdocs.travis-ci.com&amp;url_id=5fa792b8f9794a936e49fb77042472d6597ff08c">Documentation</a> about Travis CI<br>
            For help please join our IRC channel <a href="irc://irc.freenode.net/travis">irc.freenode.net#travis</a>.<br>
            Choose who receives these build notification emails in your <a href="http://clicks.travis-ci.org/track/click/30007208/docs.travis-ci.com?p=eyJzIjoiZWlZLU9TLS1ILXlzQXA4X2dLTElUR2JESGlBIiwidiI6MSwicCI6IntcInVcIjozMDAwNzIwOCxcInZcIjoxLFwidXJsXCI6XCJodHRwOlxcXC9cXFwvZG9jcy50cmF2aXMtY2kuY29tXFxcL3VzZXJcXFwvbm90aWZpY2F0aW9uc1wiLFwiaWRcIjpcIjJmMzUzZWZjMzIzMDQ2YjFhMDAwZjRmZDBkMjQ2MjE2XCIsXCJ1cmxfaWRzXCI6W1wiNGY1YzYwZDBkY2IxOGQ5ZGQzYTMwMzFkYjNjMjc1MTk4NmIyMmNhMFwiXX0ifQ">configuration file</a>.
          </td>
        </tr></table>
<div>
        <div class="section footnote">
          <p class="grey">Would you like to test your private code?</p>
          <p class="grey"><a href="http://clicks.travis-ci.org/track/click/30007208/travis-ci.com?p=eyJzIjoiTGhMalIyd0FDUW1mbDVGdHNMTW9TdDU0VVdnIiwidiI6MSwicCI6IntcInVcIjozMDAwNzIwOCxcInZcIjoxLFwidXJsXCI6XCJodHRwOlxcXC9cXFwvdHJhdmlzLWNpLmNvbT91dG1fc291cmNlPWJ1aWxkX2VtYWlsX2Zvb3RlciZ1dG1fY2FtcGFpZ249dHJhdmlzLWNpLm9yZyZ1dG1fbWVkaXVtPWVtYWlsXCIsXCJpZFwiOlwiMmYzNTNlZmMzMjMwNDZiMWEwMDBmNGZkMGQyNDYyMTZcIixcInVybF9pZHNcIjpbXCIyMDAwYzI0MjkxOWZkYWYzNzVlNDhhM2Q5OTM4ZGY4MDc3YzZlMTk4XCJdfSJ9">Travis Pro</a> could be your new best friend!</p>
        </div>

        <div class="tiny-footer">
          <p class="grey"> 
            <span>Travis CI is powered by </span><a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=2f353efc323046b1a000f4fd0d246216&amp;url=http%3A%2F%2Fbluebox.net&amp;url_id=0fe132f64bd24688e0c90360724064f644e1ec31"></a>
          </p>
        </div>
      </div>

    </div>

</div>
Behdad Esfahbod | 25 Aug 18:55 2014

harfbuzz: Branch 'master'

 src/hb-ot-shape-complex-arabic-win1256.hh |    3 +++
 1 file changed, 3 insertions(+)

New commits:
commit 22f0de5025aeeef4c8b3ca876d291d4c8e558d94
Author: Behdad Esfahbod <behdad@...>
Date:   Mon Aug 25 12:54:57 2014 -0400

    Fix build

diff --git a/src/hb-ot-shape-complex-arabic-win1256.hh b/src/hb-ot-shape-complex-arabic-win1256.hh
index 082e9df..3a20b50 100644
--- a/src/hb-ot-shape-complex-arabic-win1256.hh
+++ b/src/hb-ot-shape-complex-arabic-win1256.hh
 <at>  <at>  -313,6 +313,9  <at>  <at>  OT_TABLE_END
 /*
  * Include a second time to get the table data...
  */
+#if 0
+#include "hb-private.hh" /* Make check-includes.sh happy. */
+#endif
 #ifdef OT_MEASURE
 #include "hb-ot-shape-complex-arabic-win1256.hh"
 #endif
Travis CI | 25 Aug 18:35 2014

Broken: behdad/harfbuzz#405 (master - d457e3f)

behdad / harfbuzz (master)
Build #405 was broken.
1 minute and 25 seconds
Behdad Esfahbod d457e3f Changeset →
  [arabic] Don't #include __FILE__

Fine!

https://code.google.com/p/chromium/issues/detail?id=406957

Would you like to test your private code?

Travis Pro could be your new best friend!

<div>
    <div>
      <table class="repository"><tr>
<td><span><a href="http://clicks.travis-ci.org/track/click/30007208/travis-ci.org?p=eyJzIjoiYlhxNG80ZlNuQzNQVDRON3Bfc2JuRnRkZTFzIiwidiI6MSwicCI6IntcInVcIjozMDAwNzIwOCxcInZcIjoxLFwidXJsXCI6XCJodHRwczpcXFwvXFxcL3RyYXZpcy1jaS5vcmdcXFwvYmVoZGFkXFxcL2hhcmZidXp6XCIsXCJpZFwiOlwiMTE0MDRhNjM2MWRiNDBkOWEwM2ZhMWQ0MTFkZWI0ZjRcIixcInVybF9pZHNcIjpbXCJjMDViODE3ZjVlN2ZjYTlmMTE3ZTBhOWE1OWZmMjc0OThmN2NjN2QwXCJdfSJ9">behdad / harfbuzz</a> (<a href="http://clicks.travis-ci.org/track/click/30007208/github.com?p=eyJzIjoicHdvM1Y0bEpCbHNvZDFpbzhDeWFnOUZqQlNVIiwidiI6MSwicCI6IntcInVcIjozMDAwNzIwOCxcInZcIjoxLFwidXJsXCI6XCJodHRwczpcXFwvXFxcL2dpdGh1Yi5jb21cXFwvYmVoZGFkXFxcL2hhcmZidXp6XFxcL3RyZWVcXFwvbWFzdGVyXCIsXCJpZFwiOlwiMTE0MDRhNjM2MWRiNDBkOWEwM2ZhMWQ0MTFkZWI0ZjRcIixcInVybF9pZHNcIjpbXCIzMDVjM2I2NTk5ZDZhMDI1NDk4NGQ1MGVjMGUyZTc5Y2UxZTdmODM2XCJdfSJ9">master</a>)</span></td>
        </tr></table>
<div class="failure">
        <div class="content">
          <table>
<tr>
<td><div class="status-image"></div></td>
                <td class="build-message"><span><a href="http://clicks.travis-ci.org/track/click/30007208/travis-ci.org?p=eyJzIjoiTFFhODVKQUpXX0U5czRENVk0aUFqcjIyRFFVIiwidiI6MSwicCI6IntcInVcIjozMDAwNzIwOCxcInZcIjoxLFwidXJsXCI6XCJodHRwczpcXFwvXFxcL3RyYXZpcy1jaS5vcmdcXFwvYmVoZGFkXFxcL2hhcmZidXp6XFxcL2J1aWxkc1xcXC8zMzUwNjkyMlwiLFwiaWRcIjpcIjExNDA0YTYzNjFkYjQwZDlhMDNmYTFkNDExZGViNGY0XCIsXCJ1cmxfaWRzXCI6W1wiNWNhNzZhYzk3ZDliY2FhNjdjYjExZjRlOGRiNDdjZjc5NDg0OWE0YlwiXX0ifQ">Build #405 was broken.</a></span></td>
                <td align="right" class="time">
<div class="stop-watch"></div> <span>1 minute and 25 seconds</span>
</td>
              </tr>
<tr>
<td class="profile-image"></td>
                <td class="grey">Behdad Esfahbod</td>
                <td align="right" class="grey">
<a href="http://clicks.travis-ci.org/track/click/30007208/github.com?p=eyJzIjoiTy1zanBiazh3bHhUZ2JVNWd5UHJJNzhxZzlzIiwidiI6MSwicCI6IntcInVcIjozMDAwNzIwOCxcInZcIjoxLFwidXJsXCI6XCJodHRwczpcXFwvXFxcL2dpdGh1Yi5jb21cXFwvYmVoZGFkXFxcL2hhcmZidXp6XFxcL2NvbW1pdFxcXC9kNDU3ZTNmMGZmOWIyNzYxNmEzNGU0Y2MxMTBkM2VkYmY4Nzk2ODQxXCIsXCJpZFwiOlwiMTE0MDRhNjM2MWRiNDBkOWEwM2ZhMWQ0MTFkZWI0ZjRcIixcInVybF9pZHNcIjpbXCI1MGRiMjliMDcyM2ZhZjhjNTcwZDcyZTNjNDZmZjdkYjcwODMxYTE3XCJdfSJ9">d457e3f</a> <a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=11404a6361db40d9a03fa1d411deb4f4&amp;url=https%3A%2F%2Fgithub.com%2Fbehdad%2Fharfbuzz%2Fcompare%2F8a9319502141...d457e3f0ff9b&amp;url_id=a276aaa11947bf68165c84ad4d1cd86cf0d0c176">Changeset &rarr;</a>
</td>
              </tr>
<tr>
<td>&nbsp;</td>
                <td class="grey" colspan="2">[arabic] Don't #include __FILE__<br><br>Fine!<br><br>https://code.google.com/p/chromium/issues/detail?id=406957</td>
              </tr>
</table>
</div>
      </div>

      <table border="0" class="footer"><tr>
<td>
            </td>
          <td class="grey">
            <a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=11404a6361db40d9a03fa1d411deb4f4&amp;url=http%3A%2F%2Fdocs.travis-ci.com&amp;url_id=5fa792b8f9794a936e49fb77042472d6597ff08c">Documentation</a> about Travis CI<br>
            For help please join our IRC channel <a href="irc://irc.freenode.net/travis">irc.freenode.net#travis</a>.<br>
            Choose who receives these build notification emails in your <a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=11404a6361db40d9a03fa1d411deb4f4&amp;url=http%3A%2F%2Fdocs.travis-ci.com%2Fuser%2Fnotifications&amp;url_id=4f5c60d0dcb18d9dd3a3031db3c2751986b22ca0">configuration file</a>.
          </td>
        </tr></table>
<div>
        <div class="section footnote">
          <p class="grey">Would you like to test your private code?</p>
          <p class="grey"><a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=11404a6361db40d9a03fa1d411deb4f4&amp;url=http%3A%2F%2Ftravis-ci.com%3Futm_source%3Dbuild_email_footer%26utm_campaign%3Dtravis-ci.org%26utm_medium%3Demail&amp;url_id=2000c242919fdaf375e48a3d9938df8077c6e198">Travis Pro</a> could be your new best friend!</p>
        </div>

        <div class="tiny-footer">
          <p class="grey"> 
            <span>Travis CI is powered by </span><a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=11404a6361db40d9a03fa1d411deb4f4&amp;url=http%3A%2F%2Fbluebox.net&amp;url_id=0fe132f64bd24688e0c90360724064f644e1ec31"></a>
          </p>
        </div>
      </div>

    </div>

</div>
Behdad Esfahbod | 25 Aug 18:32 2014

harfbuzz: Branch 'master' - 2 commits

 src/hb-ot-shape-complex-arabic-fallback.hh |    2 +-
 src/hb-ot-shape-complex-arabic-win1256.hh  |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

New commits:
commit d457e3f0ff9b27616a34e4cc110d3edbf8796841
Author: Behdad Esfahbod <behdad@...>
Date:   Mon Aug 25 12:31:19 2014 -0400

    [arabic] Don't #include __FILE__

    Fine!

    https://code.google.com/p/chromium/issues/detail?id=406957

diff --git a/src/hb-ot-shape-complex-arabic-win1256.hh b/src/hb-ot-shape-complex-arabic-win1256.hh
index 63ed3f8..082e9df 100644
--- a/src/hb-ot-shape-complex-arabic-win1256.hh
+++ b/src/hb-ot-shape-complex-arabic-win1256.hh
 <at>  <at>  -314,7 +314,7  <at>  <at>  OT_TABLE_END
  * Include a second time to get the table data...
  */
 #ifdef OT_MEASURE
-#include __FILE__
+#include "hb-ot-shape-complex-arabic-win1256.hh"
 #endif

 #define HB_OT_SHAPE_COMPLEX_ARABIC_WIN1256_HH
commit 9ceb673d9c35bb28c9b2ed5359bdd8b23fda0019
Author: Behdad Esfahbod <behdad@...>
Date:   Mon Aug 25 11:48:12 2014 -0400

    [arabic] Allow disabling win1256 fallback code

    By defining HB_NO_WIN1256.

diff --git a/src/hb-ot-shape-complex-arabic-fallback.hh b/src/hb-ot-shape-complex-arabic-fallback.hh
index e5b7ed4..dc659e0 100644
--- a/src/hb-ot-shape-complex-arabic-fallback.hh
+++ b/src/hb-ot-shape-complex-arabic-fallback.hh
 <at>  <at>  -207,7 +207,7  <at>  <at>  struct arabic_fallback_plan_t

 static const arabic_fallback_plan_t arabic_fallback_plan_nil = {};

-#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(HB_WITH_WIN1256)
+#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(HB_NO_WIN1256)
 #define HB_WITH_WIN1256
 #endif

Behdad Esfahbod | 22 Aug 18:07 2014

harfbuzz: Branch 'master'

 src/hb-ot-font.cc |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

New commits:
commit 8a9319502141c09695461c386e54f998250420e9
Author: Behdad Esfahbod <behdad@...>
Date:   Fri Aug 22 12:06:57 2014 -0400

    [ot] Prefer Windows platform cmap tables / accept all Unicode encodingIDs

    Some fonts on the Mac ship with (0,1).

diff --git a/src/hb-ot-font.cc b/src/hb-ot-font.cc
index c9890c5..3514fcc 100644
--- a/src/hb-ot-font.cc
+++ b/src/hb-ot-font.cc
 <at>  <at>  -81,12 +81,15  <at>  <at>  _hb_ot_font_create (hb_font_t *font)
   const OT::CmapSubtable *subtable_uvs = NULL;

   /* 32-bit subtables. */
+  if (!subtable) subtable = cmap->find_subtable (3, 10);
   if (!subtable) subtable = cmap->find_subtable (0, 6);
   if (!subtable) subtable = cmap->find_subtable (0, 4);
-  if (!subtable) subtable = cmap->find_subtable (3, 10);
   /* 16-bit subtables. */
-  if (!subtable) subtable = cmap->find_subtable (0, 3);
   if (!subtable) subtable = cmap->find_subtable (3, 1);
+  if (!subtable) subtable = cmap->find_subtable (0, 3);
+  if (!subtable) subtable = cmap->find_subtable (0, 2);
+  if (!subtable) subtable = cmap->find_subtable (0, 1);
+  if (!subtable) subtable = cmap->find_subtable (0, 0);
   /* Meh. */
   if (!subtable) subtable = &OT::Null(OT::CmapSubtable);

Behdad Esfahbod | 15 Aug 20:28 2014

harfbuzz: Branch 'master'

 src/hb-private.hh |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

New commits:
commit 270971a0fccdf4964fd3e8ab8e5cf53037a3518d
Author: Behdad Esfahbod <behdad@...>
Date:   Fri Aug 15 14:28:04 2014 -0400

    [win32] Avoid preprocessor warnings re macros

diff --git a/src/hb-private.hh b/src/hb-private.hh
index 80fd6c4..d9b0860 100644
--- a/src/hb-private.hh
+++ b/src/hb-private.hh
 <at>  <at>  -128,8 +128,12  <at>  <at> 
 #  ifndef _WIN32_WINNT
 #    define _WIN32_WINNT 0x0600
 #  endif
-#  define WIN32_LEAN_AND_MEAN
-#  define STRICT
+#  ifndef WIN32_LEAN_AND_MEAN
+#    define WIN32_LEAN_AND_MEAN 1
+#  endif
+#  ifndef STRICT
+#    define STRICT 1
+#  endif
 #endif

 #ifdef _WIN32_WCE
Travis CI | 14 Aug 19:40 2014

Fixed: behdad/harfbuzz#401 (master - 8c6bd34)

behdad / harfbuzz (master)
Build #401 was fixed.
2 minutes and 48 seconds
Behdad Esfahbod 8c6bd34 Changeset →
  Fix check-symbols on OS X

Would you like to test your private code?

Travis Pro could be your new best friend!

<div>
    <div>
      <table class="repository"><tr>
<td><span><a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=29c82058c5f944c38ad6f6f4a28f1a85&amp;url=https%3A%2F%2Ftravis-ci.org%2Fbehdad%2Fharfbuzz&amp;url_id=c05b817f5e7fca9f117e0a9a59ff27498f7cc7d0">behdad / harfbuzz</a> (<a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=29c82058c5f944c38ad6f6f4a28f1a85&amp;url=https%3A%2F%2Fgithub.com%2Fbehdad%2Fharfbuzz%2Ftree%2Fmaster&amp;url_id=305c3b6599d6a0254984d50ec0e2e79ce1e7f836">master</a>)</span></td>
        </tr></table>
<div class="success">
        <div class="content">
          <table>
<tr>
<td><div class="status-image"></div></td>
                <td class="build-message"><span><a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=29c82058c5f944c38ad6f6f4a28f1a85&amp;url=https%3A%2F%2Ftravis-ci.org%2Fbehdad%2Fharfbuzz%2Fbuilds%2F32563387&amp;url_id=5ca76ac97d9bcaa67cb11f4e8db47cf794849a4b">Build #401 was fixed.</a></span></td>
                <td align="right" class="time">
<div class="stop-watch"></div> <span>2 minutes and 48 seconds</span>
</td>
              </tr>
<tr>
<td class="profile-image"></td>
                <td class="grey">Behdad Esfahbod</td>
                <td align="right" class="grey">
<a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=29c82058c5f944c38ad6f6f4a28f1a85&amp;url=https%3A%2F%2Fgithub.com%2Fbehdad%2Fharfbuzz%2Fcommit%2F8c6bd34d38fb3007c3d660fce0095cc5c7e9962e&amp;url_id=50db29b0723faf8c570d72e3c46ff7db70831a17">8c6bd34</a> <a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=29c82058c5f944c38ad6f6f4a28f1a85&amp;url=https%3A%2F%2Fgithub.com%2Fbehdad%2Fharfbuzz%2Fcompare%2Fa5a27073cfff...8c6bd34d38fb&amp;url_id=a276aaa11947bf68165c84ad4d1cd86cf0d0c176">Changeset &rarr;</a>
</td>
              </tr>
<tr>
<td>&nbsp;</td>
                <td class="grey" colspan="2">Fix check-symbols on OS X</td>
              </tr>
</table>
</div>
      </div>

      <table border="0" class="footer"><tr>
<td>
            </td>
          <td class="grey">
            <a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=29c82058c5f944c38ad6f6f4a28f1a85&amp;url=http%3A%2F%2Fdocs.travis-ci.com&amp;url_id=5fa792b8f9794a936e49fb77042472d6597ff08c">Documentation</a> about Travis CI<br>
            For help please join our IRC channel <a href="irc://irc.freenode.net/travis">irc.freenode.net#travis</a>.<br>
            Choose who receives these build notification emails in your <a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=29c82058c5f944c38ad6f6f4a28f1a85&amp;url=http%3A%2F%2Fdocs.travis-ci.com%2Fuser%2Fnotifications&amp;url_id=4f5c60d0dcb18d9dd3a3031db3c2751986b22ca0">configuration file</a>.
          </td>
        </tr></table>
<div>
        <div class="section footnote">
          <p class="grey">Would you like to test your private code?</p>
          <p class="grey"><a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=29c82058c5f944c38ad6f6f4a28f1a85&amp;url=http%3A%2F%2Ftravis-ci.com%3Futm_source%3Dbuild_email_footer%26utm_campaign%3Dtravis-ci.org%26utm_medium%3Demail&amp;url_id=2000c242919fdaf375e48a3d9938df8077c6e198">Travis Pro</a> could be your new best friend!</p>
        </div>

        <div class="tiny-footer">
          <p class="grey"> 
            <span>Travis CI is powered by </span><a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=29c82058c5f944c38ad6f6f4a28f1a85&amp;url=http%3A%2F%2Fbluebox.net&amp;url_id=0fe132f64bd24688e0c90360724064f644e1ec31"></a>
          </p>
        </div>
      </div>

    </div>

</div>
Behdad Esfahbod | 14 Aug 19:33 2014

harfbuzz: Branch 'master' - 2 commits

 src/check-libstdc++.sh |   14 +++++++-------
 src/check-symbols.sh   |    8 +++++++-
 src/hb-coretext.cc     |    2 +-
 3 files changed, 15 insertions(+), 9 deletions(-)

New commits:
commit 8c6bd34d38fb3007c3d660fce0095cc5c7e9962e
Author: Behdad Esfahbod <behdad@...>
Date:   Thu Aug 14 13:33:37 2014 -0400

    Fix check-symbols on OS X

diff --git a/src/check-libstdc++.sh b/src/check-libstdc++.sh
index e7e0e29..27deb42 100755
--- a/src/check-libstdc++.sh
+++ b/src/check-libstdc++.sh
 <at>  <at>  -17,14 +17,14  <at>  <at>  fi
 tested=false
 for suffix in so dylib; do
 	so=.libs/libharfbuzz.$suffix
-	if test -f "$so"; then
-		echo "Checking that we are not linking to libstdc++"
-		if ldd $so | grep 'libstdc[+][+]'; then
-			echo "Ouch, linked to libstdc++"
-			stat=1
-		fi
-		tested=true
+	if ! test -f "$so"; then continue; fi
+
+	echo "Checking that we are not linking to libstdc++"
+	if ldd $so | grep 'libstdc[+][+]'; then
+		echo "Ouch, linked to libstdc++"
+		stat=1
 	fi
+	tested=true
 done
 if ! $tested; then
 	echo "check-libstdc++.sh: libharfbuzz shared library not found; skipping test"
diff --git a/src/check-symbols.sh b/src/check-symbols.sh
index e000b01..91eefd4 100755
--- a/src/check-symbols.sh
+++ b/src/check-symbols.sh
 <at>  <at>  -16,11 +16,17  <at>  <at>  fi

 echo "Checking that we are not exposing internal symbols"
 tested=false
-for so in `ls .libs/lib*.so .libs/lib*.dylib 2>/dev/null` ; do
+for suffix in so dylib; do
+	so=.libs/libharfbuzz.$suffix
+	if ! test -f "$so"; then continue; fi
+	prefix=
 	
 	EXPORTED_SYMBOLS="`nm "$so" | grep ' [BCDGINRSTVW] ' | grep -v ' _fini\>\| _init\>\| _fdata\>\|
_ftext\>\| _fbss\>\| __bss_start\>\| __bss_start__\>\| __bss_end__\>\| _edata\>\| _end\>\|
_bss_end__\>\| __end__\>' | cut -d' ' -f3`"
 	prefix=`basename "$so" | sed 's/libharfbuzz/hb/; s/-/_/g; s/[.].*//'`

+	# Ob mac, C symbols are prefixed with _
+	if test $suffix = dylib; then prefix="_$prefix"; fi
+
 	echo "Processing $so"
 	if echo "$EXPORTED_SYMBOLS" | grep -v "^${prefix}_"; then
 		echo "Ouch, internal symbols exposed"
commit 522b1cc5261c1419166bfb90d2ff634b684be66a
Author: Behdad Esfahbod <behdad@...>
Date:   Thu Aug 14 13:29:30 2014 -0400

    [coretext] Hide feature_mappings

diff --git a/src/hb-coretext.cc b/src/hb-coretext.cc
index 9097cce..11629cc 100644
--- a/src/hb-coretext.cc
+++ b/src/hb-coretext.cc
 <at>  <at>  -327,7 +327,7  <at>  <at>  struct range_record_t {
 #define kUpperCaseType				38

 /* Table data courtesy of Apple. */
-struct feature_mapping_t {
+static const struct feature_mapping_t {
     FourCharCode otFeatureTag;
     uint16_t aatFeatureType;
     uint16_t selectorToEnable;
Behdad Esfahbod | 14 Aug 19:27 2014

harfbuzz: Branch 'master'

 src/hb-object-private.hh |  118 ++++++++++++++---------------------------------
 1 file changed, 36 insertions(+), 82 deletions(-)

New commits:
commit 0d2c2f238bf0a847ecd55a70cc0f081f18a053ac
Author: Behdad Esfahbod <behdad@...>
Date:   Thu Aug 14 13:25:55 2014 -0400

    Simplify hb-object

diff --git a/src/hb-object-private.hh b/src/hb-object-private.hh
index e9aac5d..7bd0f16 100644
--- a/src/hb-object-private.hh
+++ b/src/hb-object-private.hh
 <at>  <at>  -95,12 +95,29  <at>  <at>  struct hb_user_data_array_t
 };

 
+/* object_header */
+
+struct hb_object_header_t
+{
+  hb_reference_count_t ref_count;
+  hb_user_data_array_t user_data;
+
+#define HB_OBJECT_HEADER_STATIC {HB_REFERENCE_COUNT_INVALID, HB_USER_DATA_ARRAY_INIT}
+
+  private:
+  ASSERT_POD ();
+};
+
+
 /* object */

 template <typename Type>
 static inline void hb_object_trace (const Type *obj, const char *function)
 {
-  obj->header.trace (function);
+  DEBUG_MSG (OBJECT, (void *) obj,
+	     "%s refcount=%d",
+	     function,
+	     obj ? obj->header.ref_count.ref_count : 0);
 }

 template <typename Type>
 <at>  <at>  -118,29 +135,35  <at>  <at>  static inline Type *hb_object_create (void)
 template <typename Type>
 static inline void hb_object_init (Type *obj)
 {
-  obj->header.init ();
+  obj->header.ref_count.init (1);
+  obj->header.user_data.init ();
 }
 template <typename Type>
 static inline bool hb_object_is_inert (const Type *obj)
 {
-  return unlikely (obj->header.is_inert ());
+  return unlikely (obj->header.ref_count.is_invalid ());
 }
 template <typename Type>
 static inline Type *hb_object_reference (Type *obj)
 {
-  if (unlikely (!obj || obj->header.is_inert ()))
-    return obj;
   hb_object_trace (obj, HB_FUNC);
-  obj->header.reference ();
+  if (unlikely (!obj || hb_object_is_inert (obj)))
+    return obj;
+  obj->header.ref_count.inc ();
   return obj;
 }
 template <typename Type>
 static inline bool hb_object_destroy (Type *obj)
 {
-  if (unlikely (!obj || obj->header.is_inert ()))
-    return false;
   hb_object_trace (obj, HB_FUNC);
-  return obj->header.destroy ();
+  if (unlikely (!obj || hb_object_is_inert (obj)))
+    return false;
+  if (obj->header.ref_count.dec () != 1)
+    return false;
+
+  obj->header.ref_count.finish (); /* Do this before user_data */
+  obj->header.user_data.finish ();
+  return true;
 }
 template <typename Type>
 static inline bool hb_object_set_user_data (Type               *obj,
 <at>  <at>  -149,88 +172,19  <at>  <at>  static inline bool hb_object_set_user_data (Type               *obj,
 					    hb_destroy_func_t   destroy,
 					    hb_bool_t           replace)
 {
-  if (unlikely (!obj || obj->header.is_inert ()))
+  if (unlikely (!obj || hb_object_is_inert (obj)))
     return false;
-  return obj->header.set_user_data (key, data, destroy, replace);
+  return obj->header.user_data.set (key, data, destroy, replace);
 }

 template <typename Type>
 static inline void *hb_object_get_user_data (Type               *obj,
 					     hb_user_data_key_t *key)
 {
-  if (unlikely (!obj || obj->header.is_inert ()))
+  if (unlikely (!obj || hb_object_is_inert (obj)))
     return NULL;
-  return obj->header.get_user_data (key);
+  return obj->header.user_data.get (key);
 }

-/* object_header */
-
-struct hb_object_header_t
-{
-  hb_reference_count_t ref_count;
-  hb_user_data_array_t user_data;
-
-#define HB_OBJECT_HEADER_STATIC {HB_REFERENCE_COUNT_INVALID, HB_USER_DATA_ARRAY_INIT}
-
-  private:
-
-  template <typename Type> friend void hb_object_init (Type *obj);
-  inline void init (void) {
-    ref_count.init (1);
-    user_data.init ();
-  }
-
-  template <typename Type> friend bool hb_object_is_inert (const Type *obj);
-  inline bool is_inert (void) const {
-    return unlikely (ref_count.is_invalid ());
-  }
-
-  template <typename Type> friend Type *hb_object_reference (Type *obj);
-  inline void reference (void) {
-    ref_count.inc ();
-  }
-
-  template <typename Type> friend bool hb_object_destroy (Type *obj);
-  inline bool destroy (void) {
-    if (ref_count.dec () != 1)
-      return false;
-
-    ref_count.finish (); /* Do this before user_data */
-    user_data.finish ();
-
-    return true;
-  }
-
-  template <typename Type> friend bool hb_object_set_user_data (Type               *obj,
-								hb_user_data_key_t *key,
-								void *              data,
-								hb_destroy_func_t   destroy,
-								hb_bool_t           replace);
-  inline bool set_user_data (hb_user_data_key_t *key,
-			     void *              data,
-			     hb_destroy_func_t   destroy_func,
-			     hb_bool_t           replace) {
-    return user_data.set (key, data, destroy_func, replace);
-  }
-
-  template <typename type> friend void *hb_object_get_user_data (type               *obj,
-								 hb_user_data_key_t *key);
-  inline void *get_user_data (hb_user_data_key_t *key) {
-    return user_data.get (key);
-  }
-
-  template <typename Type> friend void hb_object_trace (const Type *obj, const char *function);
-  inline void trace (const char *function) const {
-    if (unlikely (!this)) return;
-    DEBUG_MSG (OBJECT, (void *) this,
-	       "%s refcount=%d",
-	       function,
-	       this ? ref_count.ref_count : 0);
-  }
-
-  ASSERT_POD ();
-};
-
-

 #endif /* HB_OBJECT_PRIVATE_HH */
Travis CI | 14 Aug 19:11 2014

Broken: behdad/harfbuzz#400 (master - a5a2707)

behdad / harfbuzz (master)
Build #400 was broken.
1 minute and 23 seconds
Behdad Esfahbod a5a2707 Changeset →
  Rewrite this==NULL checks to avoid undefined behavior

Fixes https://code.google.com/p/chromium/issues/detail?id=403594

Would you like to test your private code?

Travis Pro could be your new best friend!

<div>
    <div>
      <table class="repository"><tr>
<td><span><a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=1f58cca9bd6844b1a3d336ae5ee4e337&amp;url=https%3A%2F%2Ftravis-ci.org%2Fbehdad%2Fharfbuzz&amp;url_id=c05b817f5e7fca9f117e0a9a59ff27498f7cc7d0">behdad / harfbuzz</a> (<a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=1f58cca9bd6844b1a3d336ae5ee4e337&amp;url=https%3A%2F%2Fgithub.com%2Fbehdad%2Fharfbuzz%2Ftree%2Fmaster&amp;url_id=305c3b6599d6a0254984d50ec0e2e79ce1e7f836">master</a>)</span></td>
        </tr></table>
<div class="failure">
        <div class="content">
          <table>
<tr>
<td><div class="status-image"></div></td>
                <td class="build-message"><span><a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=1f58cca9bd6844b1a3d336ae5ee4e337&amp;url=https%3A%2F%2Ftravis-ci.org%2Fbehdad%2Fharfbuzz%2Fbuilds%2F32560795&amp;url_id=5ca76ac97d9bcaa67cb11f4e8db47cf794849a4b">Build #400 was broken.</a></span></td>
                <td align="right" class="time">
<div class="stop-watch"></div> <span>1 minute and 23 seconds</span>
</td>
              </tr>
<tr>
<td class="profile-image"></td>
                <td class="grey">Behdad Esfahbod</td>
                <td align="right" class="grey">
<a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=1f58cca9bd6844b1a3d336ae5ee4e337&amp;url=https%3A%2F%2Fgithub.com%2Fbehdad%2Fharfbuzz%2Fcommit%2Fa5a27073cfff91c4f80209ca8462543130af61dd&amp;url_id=50db29b0723faf8c570d72e3c46ff7db70831a17">a5a2707</a> <a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=1f58cca9bd6844b1a3d336ae5ee4e337&amp;url=https%3A%2F%2Fgithub.com%2Fbehdad%2Fharfbuzz%2Fcompare%2Fc4308f895aef...a5a27073cfff&amp;url_id=a276aaa11947bf68165c84ad4d1cd86cf0d0c176">Changeset &rarr;</a>
</td>
              </tr>
<tr>
<td>&nbsp;</td>
                <td class="grey" colspan="2">Rewrite this==NULL checks to avoid undefined behavior<br><br>Fixes https://code.google.com/p/chromium/issues/detail?id=403594</td>
              </tr>
</table>
</div>
      </div>

      <table border="0" class="footer"><tr>
<td>
            </td>
          <td class="grey">
            <a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=1f58cca9bd6844b1a3d336ae5ee4e337&amp;url=http%3A%2F%2Fdocs.travis-ci.com&amp;url_id=5fa792b8f9794a936e49fb77042472d6597ff08c">Documentation</a> about Travis CI<br>
            For help please join our IRC channel <a href="irc://irc.freenode.net/travis">irc.freenode.net#travis</a>.<br>
            Choose who receives these build notification emails in your <a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=1f58cca9bd6844b1a3d336ae5ee4e337&amp;url=http%3A%2F%2Fdocs.travis-ci.com%2Fuser%2Fnotifications&amp;url_id=4f5c60d0dcb18d9dd3a3031db3c2751986b22ca0">configuration file</a>.
          </td>
        </tr></table>
<div>
        <div class="section footnote">
          <p class="grey">Would you like to test your private code?</p>
          <p class="grey"><a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=1f58cca9bd6844b1a3d336ae5ee4e337&amp;url=http%3A%2F%2Ftravis-ci.com%3Futm_source%3Dbuild_email_footer%26utm_campaign%3Dtravis-ci.org%26utm_medium%3Demail&amp;url_id=2000c242919fdaf375e48a3d9938df8077c6e198">Travis Pro</a> could be your new best friend!</p>
        </div>

        <div class="tiny-footer">
          <p class="grey"> 
            <span>Travis CI is powered by </span><a href="http://clicks.travis-ci.org/track/click.php?u=30007208&amp;id=1f58cca9bd6844b1a3d336ae5ee4e337&amp;url=http%3A%2F%2Fbluebox.net&amp;url_id=0fe132f64bd24688e0c90360724064f644e1ec31"></a>
          </p>
        </div>
      </div>

    </div>

</div>

Gmane