らんだむな記憶

blogというものを体験してみようか!的なー

mergeFonts

なんかUFOsのmergeがうまくいかない。

$ lldb /Users/xxx/git_work/afdko/FDK/Tools/osx/mergeFonts -c /cores/core.2629 
(lldb) target create "/Users/xxx/git_work/afdko/FDK/Tools/osx/mergeFonts" --core "/cores/core.2629"
btCore file '/cores/core.2629' (i386) was loaded.
(lldb) bt
* thread #1, stop reason = signal SIGSTOP
  * frame #0: 0xa1659496 libsystem_kernel.dylib`__pthread_kill + 10
    frame #1: 0xa173fc63 libsystem_pthread.dylib`pthread_kill + 90
    frame #2: 0xa15b9a34 libsystem_c.dylib`abort + 141
    frame #3: 0xa16b08e7 libsystem_malloc.dylib`free + 529
    frame #4: 0x000b261b mergeFonts`mem_manage(cb=0x7b20568c, old=0x7b1b9428, size=0) at mergeFonts.c:730
    frame #5: 0x000d4fee mergeFonts`memFree(h=0x7b1fb000, ptr=0x7b1b9428) at uforead.c:341
    frame #6: 0x000d5c2b mergeFonts`ufoEndFont(h=0x7b1fb000) at uforead.c:4478
    frame #7: 0x000c8e15 mergeFonts`ufoMergeFont(h=0x7b1b8a00, origin=0, isFirstFont=1, srcCtx=0xbff53308) at mergeFonts.c:6005
    frame #8: 0x000c7a46 mergeFonts`mergeFile(h=0x7b1b8a00, srcname="SourceHanSansJP-Regular_AJ1-Generic.ufo", isFirstFont=1, srcCtx=0xbff53308) at mergeFonts.c:7976
    frame #9: 0x000bf480 mergeFonts`doMergeFileSet(h=0x7b1b8a00, argc=7, argv=0xbff535f8, i=5) at mergeFonts.c:8181
    frame #10: 0x000af646 mergeFonts`parseArgs(h=0x7b1b8a00, argc=7, argv=0xbff535f8) at mergeFonts.c:8288
    frame #11: 0x000ae515 mergeFonts`main(argc=7, argv=0xbff535f8) at mergeFonts.c:9376
    frame #12: 0xa152a395 libdyld.dylib`start + 1

デバッグ版を使いたかったので、

diff --git a/FDK/Tools/Programs/mergeFonts/build/osx/xcode4/BuildAll.sh b/FDK/Tools/Programs/mergeFonts/build/osx/xcode4/BuildAll.sh
index 98f386c..f669e83 100755
--- a/FDK/Tools/Programs/mergeFonts/build/osx/xcode4/BuildAll.sh
+++ b/FDK/Tools/Programs/mergeFonts/build/osx/xcode4/BuildAll.sh
@@ -5,5 +5,6 @@ xcodebuild -target BuildAll -project $target.xcodeproj -configuration Release $1
 
 if [ -z "$1" ]
 then
-       cp ../../../exe/osx/release/$target ../../../../../osx/
+#      cp ../../../exe/osx/release/$target ../../../../../osx/
+       cp ../../../exe/osx/debug/$target ../../../../../osx/
 fi

で事前にデバッグビルド版を転送しておいた。シンボルが見えていいね!
とりあえずは

diff --git a/FDK/Tools/Programs/mergeFonts/source/mergeFonts.c b/FDK/Tools/Programs/mergeFonts/source/mergeFonts.c
index f6c3a6e..b5d7f99 100644
--- a/FDK/Tools/Programs/mergeFonts/source/mergeFonts.c
+++ b/FDK/Tools/Programs/mergeFonts/source/mergeFonts.c
@@ -727,7 +727,7 @@ static void *mem_manage(ctlMemoryCallbacks *cb, void *old, size_t size)
                        return NULL;                            /* size == 0, old == NULL */
                else                                                    
                        {                                                       
-                       free(old);                                      /* size == 0, old != NULL */
+                       //free(old);                                    /* size == 0, old != NULL */
                        return NULL;
                        }
                }

でクラッシュしなくはなるが...。どっかのポインタがNULLで初期化されてないんだろうなぁ。