Masaki Yatsu
yatsu****@yatsu*****
2004年 4月 15日 (木) 23:08:39 JST
谷津です。 uim-helper.cで、getpwuid()の結果をfree()していますが、 Mac OS Xではgetpwuid()の結果は静的なアドレスなので、free() すると落ちてしまいます。 逆にchar *loginは解放されていないので、free()する必要がある と思います。 Mac OS X以外の環境ではメモリが確保されるのかもしれませんけど、 とりあえずpatchを作ってみました。 --- uim-0.3.4.2/uim/uim-helper.c.org Thu Apr 15 22:40:17 2004 +++ uim-0.3.4.2/uim/uim-helper.c Thu Apr 15 22:41:53 2004 @@ -105,18 +105,21 @@ { char *path; char *login; + struct passwd *pw = NULL; login = getenv("LOGNAME"); if(!login) { - struct passwd *pw; pw = getpwuid(getuid()); login = strdup(pw->pw_name); - free(pw); } path = (char*)malloc(strlen(login)+ 20); sprintf(path, "/tmp/uimhelper-%s",login); + + if (pw) + free(login); + return path; } --- 谷津真樹 (Masaki Yatsu) mailto:yatsu****@yatsu*****