Hiroyuki Ikezoe
poinc****@ikezo*****
2003年 10月 26日 (日) 20:13:54 JST
zoeです。 やっと自分の環境でvalgrindを動かすことができたのでチェックしてみました。 結果、3箇所でエラーが出てました。 1. Invalid read of size 1 at 0x400221C2: strcmp (in/usr/lib/valgrind/vgskin_memcheck.so) by 0x807D0C0:kz_profile_delete_key (kz-profile.c:823) by 0x8075BD2:kz_window_store_state (kz-window.c:893) by 0x807525D:kz_window_delete_event (kz-window.c:683) Address 0x424F6884 is0 bytes inside a block of size 33 free'd at 0x4002AD0B: free(in /usr/lib/valgrind/vgskin_memcheck.so) by 0x407995D3: g_free(in /usr/lib/libglib-2.0.so.0.200.3) by 0x807CEBF: kz_profile_list_free (kz-profile.c:754) by 0x807D0E3: kz_profile_delete_key (kz-profile.c:829) パッチ↓ Index: kz-profile.c =================================================================== RCS file: /cvsroot/kazehakase/kazehakase/src/kz-profile.c,v retrieving revision 1.2 diff -u -r1.2 kz-profile.c --- kz-profile.c 7 Sep 2003 05:12:48 -0000 1.2 +++ kz-profile.c 26 Oct 2003 11:06:36 -0000 @@ -828,6 +828,7 @@ kz_profile_list_free(p); profile->edit = TRUE; result = TRUE; + break; } } return result; 一応これで直るには直ったんですが、なんかいかん気がしてます。 しっかり追えてません…。 2. 22 bytes in 1 blocks are definitely lost in loss record 23 of 131 at 0x4002AA01: malloc (in/usr/lib/valgrind/vgskin_memcheck.so) by 0x40799468: g_malloc(in /usr/lib/libglib-2.0.so.0.200.3) by 0x407A6C36: g_strdup(in /usr/lib/libglib-2.0.so.0.200.3) by 0x8080C28: kz_xml_node_new (kz-xml.c:380) パッチ↓ Index: kz-xml.c =================================================================== RCS file: /cvsroot/kazehakase/kazehakase/src/kz-xml.c,v retrieving revision 1.3 diff -u -r1.3 kz-xml.c --- kz-xml.c 25 Oct 2003 20:46:19 -0000 1.3 +++ kz-xml.c 26 Oct 2003 11:06:37 -0000 @@ -355,6 +355,12 @@ decl = kz_xml_node_new(xml, KZ_XML_NODE_XML_DECL); kz_xml_node_append_child(node, decl); + if (xml->encoding && *xml->encoding) + decl->content = g_strdup_printf("<?xml version=\"1.0\"" + " encoding=\"%s\"?>", + xml->encoding); + else + decl->content = g_strdup("<?xml version=\"1.0\"?>"); space = kz_xml_text_node_new("\n"); kz_xml_node_append_child(node, space); @@ -370,14 +376,6 @@ break; } case KZ_XML_NODE_XML_DECL: - g_return_val_if_fail(KZ_IS_XML(xml), node); - - if (xml->encoding && *xml->encoding) - node->content = g_strdup_printf("<?xml version=\"1.0\"" - " encoding=\"%s\"?>", - xml->encoding); - else - node->content = g_strdup("<?xml version=\"1.0\"?>"); break; case KZ_XML_NODE_TEXT: case KZ_XML_NODE_COMMENT: これはこれで直ってると思います(コード的にはともかく)。 3. 40 bytes in 2 blocks are definitely lost in loss record 37 of 131 at 0x4002AF09: calloc (in /usr/lib/valgrind/vgskin_memcheck.so) by 0x407994E0: g_malloc0 (in /usr/lib/libglib-2.0.so.0.200.3) by 0x8080ACB: kz_xml_node_new (kz-xml.c:340) by 0x8080B32: kz_xml_node_new(kz-xml.c:356) これはまだ追えてません。 2だけコミットしておきました。 3はとりあえづバグトラックに放りこんでおきます。