Changeset: 0d003f5bfc68 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0d003f5bfc68
Modified Files:
        sql/src/backends/monet5/merovingian/client/monetdb.c
Branch: default
Log Message:

monetdb: fix segfault when database to operate on is first in the list


diffs (88 lines):

diff -r 0c852c23794f -r 0d003f5bfc68 
sql/src/backends/monet5/merovingian/client/monetdb.c
--- a/sql/src/backends/monet5/merovingian/client/monetdb.c      Tue Dec 21 
13:10:55 2010 +0100
+++ b/sql/src/backends/monet5/merovingian/client/monetdb.c      Tue Dec 21 
13:28:05 2010 +0100
@@ -446,7 +446,7 @@
 }
 
 static sabdb *
-globMatchDBS(int argc, char *argv[], sabdb *orig, char *cmd)
+globMatchDBS(int argc, char *argv[], sabdb **orig, char *cmd)
 {
        sabdb *w = NULL;
        sabdb *top = NULL;
@@ -459,7 +459,7 @@
                matched = 0;
                if (argv[i] != NULL) {
                        prev = NULL;
-                       for (stats = orig; stats != NULL; stats = stats->next) {
+                       for (stats = *orig; stats != NULL; stats = stats->next) 
{
                                if (glob(argv[i], stats->dbname)) {
                                        matched = 1;
                                        /* move out of orig into w, such that 
we can't
@@ -472,10 +472,10 @@
                                                w = w->next = stats;
                                        }
                                        if (prev == NULL) {
-                                               orig = stats->next;
+                                               *orig = stats->next;
                                                /* little hack to revisit the 
now top of the
                                                 * list */
-                                               w->next = orig;
+                                               w->next = *orig;
                                                stats = w;
                                                continue;
                                        } else {
@@ -595,7 +595,7 @@
                        free(e);
                        exit(2);
                }
-               stats = globMatchDBS(argc, argv, orig, argv[0]);
+               stats = globMatchDBS(argc, argv, &orig, argv[0]);
                SABAOTHfreeStatus(&orig);
                orig = stats;
 
@@ -706,7 +706,7 @@
        /* look at the arguments and evaluate them based on a glob (hence we
         * listed all databases before) */
        if (doall != 1) {
-               stats = globMatchDBS(argc, argv, orig, "status");
+               stats = globMatchDBS(argc, argv, &orig, "status");
                SABAOTHfreeStatus(&orig);
                orig = stats;
        }
@@ -933,7 +933,7 @@
                exit(2);
        }
        if (doall != 1) {
-               stats = globMatchDBS(argc, argv, orig, type);
+               stats = globMatchDBS(argc, argv, &orig, type);
                SABAOTHfreeStatus(&orig);
                orig = stats;
        }
@@ -1059,7 +1059,7 @@
                free(e);
                exit(2);
        }
-       stats = globMatchDBS(argc, argv, orig, argv[0]);
+       stats = globMatchDBS(argc, argv, &orig, argv[0]);
        SABAOTHfreeStatus(&orig);
        orig = stats;
 
@@ -1206,7 +1206,7 @@
        /* look at the arguments and evaluate them based on a glob (hence we
         * listed all databases before) */
        if (doall != 1) {
-               stats = globMatchDBS(argc, argv, orig, "get");
+               stats = globMatchDBS(argc, argv, &orig, "get");
                SABAOTHfreeStatus(&orig);
                orig = stats;
        }
@@ -1318,7 +1318,7 @@
                free(e);
                exit(2);
        }
-       stats = globMatchDBS(argc, argv, orig, "destroy");
+       stats = globMatchDBS(argc, argv, &orig, "destroy");
        SABAOTHfreeStatus(&orig);
        orig = stats;
 
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to