Changeset: e2dbfb928a9c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e2dbfb928a9c
Modified Files:
monetdb5/mal/mal_authorize.c
monetdb5/mal/mal_builder.c
monetdb5/mal/mal_function.c
monetdb5/mal/mal_profiler.c
monetdb5/modules/kernel/algebra.c
monetdb5/modules/mal/mal_mapi.c
monetdb5/modules/mal/pcre.c
monetdb5/modules/mal/remote.c
Branch: default
Log Message:
Merge with Jan2014 branch.
diffs (245 lines):
diff --git a/monetdb5/mal/mal_authorize.c b/monetdb5/mal/mal_authorize.c
--- a/monetdb5/mal/mal_authorize.c
+++ b/monetdb5/mal/mal_authorize.c
@@ -418,7 +418,6 @@ AUTHchangePassword(Client *c, str *oldpa
/* decypher the password */
msg= AUTHdecypherValue(&hash, &tmp);
if ( msg){
- GDKfree(hash);
return msg;
}
if (strcmp(hash, *oldpass) != 0){
@@ -430,7 +429,6 @@ AUTHchangePassword(Client *c, str *oldpa
/* cypher the password */
msg= AUTHcypherValue(&hash, passwd);
if ( msg){
- GDKfree(hash);
return msg;
}
diff --git a/monetdb5/mal/mal_builder.c b/monetdb5/mal/mal_builder.c
--- a/monetdb5/mal/mal_builder.c
+++ b/monetdb5/mal/mal_builder.c
@@ -433,6 +433,7 @@ pushNilType(MalBlkPtr mb, InstrPtr q, ch
{
int _t,idx;
ValRecord cst;
+ str msg;
if (q == NULL)
return NULL;
@@ -442,7 +443,11 @@ pushNilType(MalBlkPtr mb, InstrPtr q, ch
cst.vtype=TYPE_void;
cst.val.oval= oid_nil;
cst.len = 0;
- convertConstant(idx, &cst);
+ msg = convertConstant(idx, &cst);
+ if (msg != MAL_SUCCEED) {
+ GDKfree(msg);
+ return NULL;
+ }
_t = defConstant(mb,idx,&cst);
setVarUDFtype(mb,_t);
@@ -453,13 +458,18 @@ pushType(MalBlkPtr mb, InstrPtr q, int t
{
int _t;
ValRecord cst;
+ str msg;
if (q == NULL)
return NULL;
cst.vtype=TYPE_void;
cst.val.oval= oid_nil;
cst.len = 0;
- convertConstant(tpe, &cst);
+ msg = convertConstant(tpe, &cst);
+ if (msg != MAL_SUCCEED) {
+ GDKfree(msg);
+ return NULL;
+ }
_t = defConstant(mb,tpe,&cst);
setVarUDFtype(mb,_t);
@@ -471,13 +481,18 @@ pushZero(MalBlkPtr mb, InstrPtr q, int t
{
int _t;
ValRecord cst;
+ str msg;
if (q == NULL)
return NULL;
cst.vtype=TYPE_int;
cst.val.ival= 0;
cst.len = 0;
- convertConstant(tpe, &cst);
+ msg = convertConstant(tpe, &cst);
+ if (msg != MAL_SUCCEED) {
+ GDKfree(msg);
+ return NULL;
+ }
_t = defConstant(mb,tpe,&cst);
return pushArgument(mb, q, _t);
diff --git a/monetdb5/mal/mal_function.c b/monetdb5/mal/mal_function.c
--- a/monetdb5/mal/mal_function.c
+++ b/monetdb5/mal/mal_function.c
@@ -993,9 +993,10 @@ showFlowGraph(MalBlkPtr mb, MalStkPtr st
}
free(buf);
} else if (f != GDKout) {
- if (stethoscope )
+ if (!stethoscope ) {
+ MT_sleep_ms(4000); /* delay for stethoscope */
mnstr_close(f);
- else MT_sleep_ms(4000); /* delay for stethoscope */
+ }
}
}
diff --git a/monetdb5/mal/mal_profiler.c b/monetdb5/mal/mal_profiler.c
--- a/monetdb5/mal/mal_profiler.c
+++ b/monetdb5/mal/mal_profiler.c
@@ -1316,8 +1316,7 @@ static int getCPULoad(char cpuload[BUFSI
s= strchr(s,' ');
if (s == NULL) /* unexpected format of file */
break;
- if ( cpu < 0 || cpu > 255) goto skip;
-
+
while( *s && isspace((int)*s)) s++;
i= sscanf(s,LLFMT" "LLFMT" "LLFMT" "LLFMT" "LLFMT,
&user, &nice, &system, &idle, &iowait);
if ( i != 5 )
diff --git a/monetdb5/modules/kernel/algebra.c
b/monetdb5/modules/kernel/algebra.c
--- a/monetdb5/modules/kernel/algebra.c
+++ b/monetdb5/modules/kernel/algebra.c
@@ -267,7 +267,7 @@ ALGminany(ptr result, int *bid)
ptr p;
str msg = MAL_SUCCEED;
- if ((b = BATdescriptor(*bid)) == NULL)
+ if (result == NULL || (b = BATdescriptor(*bid)) == NULL)
throw(MAL, "algebra.min", RUNTIME_OBJECT_MISSING);
if (!ATOMlinear(b->ttype)) {
@@ -279,6 +279,7 @@ ALGminany(ptr result, int *bid)
* (ptr *) result = p = BATmin(b, NULL);
} else {
p = BATmin(b, result);
+ assert(p == result);
}
if (p == NULL)
msg = createException(MAL, "algebra.min",
GDK_EXCEPTION);
@@ -294,7 +295,7 @@ ALGmaxany(ptr result, int *bid)
ptr p;
str msg = MAL_SUCCEED;
- if ((b = BATdescriptor(*bid)) == NULL)
+ if (result == NULL || (b = BATdescriptor(*bid)) == NULL)
throw(MAL, "algebra.max", RUNTIME_OBJECT_MISSING);
if (!ATOMlinear(b->ttype)) {
@@ -306,6 +307,7 @@ ALGmaxany(ptr result, int *bid)
* (ptr *) result = p = BATmax(b, NULL);
} else {
p = BATmax(b, result);
+ assert(p == result);
}
if (p == NULL)
msg = createException(MAL, "algebra.max",
GDK_EXCEPTION);
diff --git a/monetdb5/modules/mal/mal_mapi.c b/monetdb5/modules/mal/mal_mapi.c
--- a/monetdb5/modules/mal/mal_mapi.c
+++ b/monetdb5/modules/mal/mal_mapi.c
@@ -457,10 +457,12 @@ SERVERlisten(int *Port, str *Usockfile,
}
if( setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *) &on,
sizeof on) ) {
+ char *err = strerror(errno);
GDKfree(psock);
if (usockfile)
GDKfree(usockfile);
- throw(IO, "mal_mapi.listen", OPERATION_FAILED ":
setsockptr failed %s", strerror(errno));
+ closesocket(sock);
+ throw(IO, "mal_mapi.listen", OPERATION_FAILED ":
setsockptr failed %s", err);
}
server.sin_family = AF_INET;
@@ -569,6 +571,8 @@ SERVERlisten(int *Port, str *Usockfile,
psock[2] = INVALID_SOCKET;
if (MT_create_thread(pidp, (void (*)(void *)) SERVERlistenThread,
psock, MT_THR_DETACHED) != 0) {
GDKfree(psock);
+ if (usockfile)
+ GDKfree(usockfile);
throw(MAL, "mal_mapi.listen", OPERATION_FAILED ": starting
thread failed");
}
#ifdef DEBUG_SERVER
diff --git a/monetdb5/modules/mal/pcre.c b/monetdb5/modules/mal/pcre.c
--- a/monetdb5/modules/mal/pcre.c
+++ b/monetdb5/modules/mal/pcre.c
@@ -1641,6 +1641,7 @@ PCRElike_pcre(int *ret, int *b, str *pat
r = PCREuselect(ret, &ppat, b, &ignore);
else
r = PCREselect(ret, &ppat, b, &ignore);
+ GDKfree(ppat);
} else {
BAT *bp = BATdescriptor(*b);
BAT *res = NULL;
diff --git a/monetdb5/modules/mal/remote.c b/monetdb5/modules/mal/remote.c
--- a/monetdb5/modules/mal/remote.c
+++ b/monetdb5/modules/mal/remote.c
@@ -178,9 +178,13 @@ str RMTconnectScen(
"is not supported", *scen);
m = mapi_mapiuri(*ouri, *user, *passwd, *scen);
- if (mapi_error(m))
- throw(MAL, "remote.connect", "unable to connect to '%s': %s",
- *ouri, mapi_error_str(m));
+ if (mapi_error(m)) {
+ msg = createException(MAL, "remote.connect",
+ "unable to connect to
'%s': %s",
+ *ouri,
mapi_error_str(m));
+ mapi_destroy(m);
+ return msg;
+ }
MT_lock_set(&mal_remoteLock, "remote.connect");
@@ -196,10 +200,12 @@ str RMTconnectScen(
}
if (mapi_reconnect(m) != MOK) {
+ MT_lock_unset(&mal_remoteLock, "remote.connect");
+ msg = createException(IO, "remote.connect",
+ "unable to connect to
'%s': %s",
+ *ouri,
mapi_error_str(m));
mapi_destroy(m);
- MT_lock_unset(&mal_remoteLock, "remote.connect");
- throw(IO, "remote.connect", "unable to connect to '%s': %s",
- *ouri, mapi_error_str(m));
+ return msg;
}
/* connection established, add to list */
@@ -747,17 +753,20 @@ str RMTput(Client cntxt, MalBlkPtr mb, M
mapi_close_handle(mhdl);
} else {
str val = NULL;
+ char *tpe;
char qbuf[BUFSIZ + 1]; /* FIXME: this should be dynamic */
if (ATOMvarsized(type)) {
ATOMformat(type, *(str *)value, &val);
} else {
ATOMformat(type, value, &val);
}
+ tpe = getTypeIdentifier(type);
if (type <= TYPE_str)
- snprintf(qbuf, BUFSIZ, "%s := %s:%s;\n", ident, val,
getTypeIdentifier(type));
+ snprintf(qbuf, BUFSIZ, "%s := %s:%s;\n", ident, val,
tpe);
else
- snprintf(qbuf, BUFSIZ, "%s := \"%s\":%s;\n", ident,
val, getTypeIdentifier(type));
+ snprintf(qbuf, BUFSIZ, "%s := \"%s\":%s;\n", ident,
val, tpe);
qbuf[BUFSIZ] = '\0';
+ GDKfree(tpe);
GDKfree(val);
#ifdef _DEBUG_REMOTE
mnstr_printf(cntxt->fdout, "#remote.put:%s:%s\n", c->name,
qbuf);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list