svnno****@sourc*****
svnno****@sourc*****
Thu Sep 10 12:49:18 JST 2009
Revision: 3834 http://sourceforge.jp/projects/kazehakase/svn/view?view=rev&revision=3834 Author: ikezoe Date: 2009-09-10 12:49:17 +0900 (Thu, 10 Sep 2009) Log Message: ----------- 2009-09-09 Hiroyuki Ikezoe <poinc****@ikezo*****> * src/kz-xml.c: Free variables in finalize() instead of dispose(), and use g_file_set_contentes() instead of fwrite() etc. Modified Paths: -------------- kazehakase/trunk/ChangeLog kazehakase/trunk/src/kz-xml.c Modified: kazehakase/trunk/ChangeLog =================================================================== --- kazehakase/trunk/ChangeLog 2009-09-08 03:10:08 UTC (rev 3833) +++ kazehakase/trunk/ChangeLog 2009-09-10 03:49:17 UTC (rev 3834) @@ -1,3 +1,9 @@ +2009-09-09 Hiroyuki Ikezoe <poinc****@ikezo*****> + + * src/kz-xml.c: Free variables in finalize() + instead of dispose(), and use g_file_set_contentes() instead of + fwrite() etc. + 2009-09-08 Hiroyuki Ikezoe <poinc****@ikezo*****> * src/actions/kz-actions.c: Fix memory leak. Modified: kazehakase/trunk/src/kz-xml.c =================================================================== --- kazehakase/trunk/src/kz-xml.c 2009-09-08 03:10:08 UTC (rev 3833) +++ kazehakase/trunk/src/kz-xml.c 2009-09-10 03:49:17 UTC (rev 3834) @@ -35,6 +35,7 @@ #define KZ_XML_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), KZ_TYPE_XML, KzXMLPrivate)) static void dispose (GObject *object); +static void finalize (GObject *object); static void kz_xml_attr_free (KzXMLAttr *attr); gchar *get_cdata_as_plaintext(gpointer content); @@ -50,6 +51,7 @@ object_class = G_OBJECT_CLASS(klass); object_class->dispose = dispose; + object_class->finalize = finalize; g_type_class_add_private (object_class, sizeof(KzXMLPrivate)); } @@ -72,15 +74,6 @@ { KzXML *xml = KZ_XML(object); - g_free(xml->file); - xml->file = NULL; - - g_free(xml->dtd); - xml->dtd = NULL; - - g_free(xml->encoding); - xml->encoding = NULL; - if (xml->root) kz_xml_node_unref(xml->root); xml->root = NULL; @@ -90,6 +83,20 @@ } +static void +finalize (GObject *object) +{ + KzXML *xml = KZ_XML(object); + + g_free(xml->file); + g_free(xml->dtd); + g_free(xml->encoding); + + if (G_OBJECT_CLASS (kz_xml_parent_class)->finalize) + G_OBJECT_CLASS (kz_xml_parent_class)->finalize(object); +} + + KzXML * kz_xml_new (void) { @@ -311,30 +318,17 @@ gboolean kz_xml_save (KzXML *xml, const gchar *filename) { - FILE *fp; const gchar *file = filename ? filename : xml->file; gchar *str; - size_t len; + gboolean success; g_return_val_if_fail(file && *file, FALSE); - fp = fopen(file, "w"); - if (!fp) return FALSE; - str = kz_xml_node_to_xml(xml->root); - - if (!str || !*str) - { - g_free(str); - fclose(fp); - return FALSE; - } - - len = fwrite(str, strlen(str), 1, fp); - fclose(fp); + success =g_file_set_contents(file, str, -1, NULL); g_free(str); - return TRUE; + return success; }