antiright-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Antiright-devel] antiright gtkshell/main.c libantiright/argument...


From: Jeffrey Bedard
Subject: [Antiright-devel] antiright gtkshell/main.c libantiright/argument...
Date: Sat, 15 Dec 2007 02:55:36 +0000

CVSROOT:        /sources/antiright
Module name:    antiright
Changes by:     Jeffrey Bedard <jefbed> 07/12/15 02:55:36

Modified files:
        gtkshell       : main.c 
        libantiright   : arguments.c arguments.h 

Log message:
        Free option argument storage.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/main.c?cvsroot=antiright&r1=1.32&r2=1.33
http://cvs.savannah.gnu.org/viewcvs/antiright/libantiright/arguments.c?cvsroot=antiright&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/antiright/libantiright/arguments.h?cvsroot=antiright&r1=1.1&r2=1.2

Patches:
Index: gtkshell/main.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/main.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -b -r1.32 -r1.33
--- gtkshell/main.c     13 Dec 2007 17:20:24 -0000      1.32
+++ gtkshell/main.c     15 Dec 2007 02:55:35 -0000      1.33
@@ -64,32 +64,23 @@
                {
                        gsh=make_window_for_args((const gint)argset->argc, 
                                (const gchar **)argset->argv);
-                       //$(argset, delete);
+                       $(argset, delete_options);
                        argset=ARNEW(ar, ARArguments);
                        $(argset, add, argv[0]);
                }
                else /* Add more arguments.  */
                {
-#ifdef DEBUG
-                       ARBUG("add arguments");
-#endif /* DEBUG */
                        $(argset, add, argv[counter]);
                }
        }
-       make_window_for_args((const gint)argset->argc, 
+       gsh=make_window_for_args((const gint)argset->argc, 
                (const gchar **)argset->argv);
-       /*$(argset, delete);
+       $(argset, delete_options);
        if(gsh->command_dictionary)
-               $(gsh->command_dictionary, delete); */
-
-       /*
-               The following cause segmentation faults, so the hash
-               table cannot be freed.  
-               g_hash_table_destroy((gsh->command_dictionary->__hash));
-               g_assert(gsh->command_dictionary->__hash);
-               g_free(gsh->command_dictionary); */
-
+               $(gsh->command_dictionary, delete); 
        gtk_main(); /* application main loop  */
+       $(gsh, delete);
+       $(argset, delete);
 
        return 0;
 }

Index: libantiright/arguments.c
===================================================================
RCS file: /sources/antiright/antiright/libantiright/arguments.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- libantiright/arguments.c    6 Sep 2007 14:38:09 -0000       1.2
+++ libantiright/arguments.c    15 Dec 2007 02:55:36 -0000      1.3
@@ -23,10 +23,30 @@
 #include "library.h"
 
 static void
+ar_ARArguments_delete_options(struct ARArguments * args)
+{
+       guint counter=args->argc;
+
+       for(; counter>0; counter--)
+       {
+               gchar * arg=args->argv[counter-1];
+               if(arg[0]=='-')
+               {
+                       g_free(arg);
+                       args->argv[counter-1]=NULL;
+               }
+       }
+}
+
+static void
 ar_ARArguments_delete_contents(struct ARArguments * args)
 {
        for(; args->argc>0; args->argc--)
-               g_free(args->argv[args->argc-1]);
+       {
+               gchar * arg = args->argv[args->argc-1];
+               if(arg)
+                       g_free(arg);
+       }
        g_free(args->argv);
 }
 
@@ -64,6 +84,7 @@
        args->add=&ar_ARArguments_add;
        args->add_as_first=&ar_ARArguments_add_as_first;
        args->delete=&ar_delete_ARArguments;
+       args->delete_options=&ar_ARArguments_delete_options;
 }
 
 struct ARArguments *

Index: libantiright/arguments.h
===================================================================
RCS file: /sources/antiright/antiright/libantiright/arguments.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- libantiright/arguments.h    10 May 2007 00:08:28 -0000      1.1
+++ libantiright/arguments.h    15 Dec 2007 02:55:36 -0000      1.2
@@ -33,6 +33,7 @@
        void (*add)(struct ARArguments *, const gchar *);
        void (*add_as_first)(struct ARArguments *, const gchar *);
        void (*delete)(struct ARArguments *);
+       void (*delete_options)(struct ARArguments *);
 };
 
 struct ARArguments *




reply via email to

[Prev in Thread] Current Thread [Next in Thread]