[Anthy-dev 766] uimのgetpwuid()

Back to archive index

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*****




Anthy-dev メーリングリストの案内
Back to archive index