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