From: Aleš Křenek Date: Mon, 28 May 2007 11:53:30 +0000 (+0000) Subject: - fix memory leak X-Git-Tag: glite-jp-primary_R_1_3_0_3~2 X-Git-Url: http://scientific.zcu.cz/git/?a=commitdiff_plain;h=dcbd3f995a9b502565e232d577ab8045dd26b1df;p=jra1mw.git - fix memory leak - attempt evaluate_to_expr after evaluate_to_string failed - returns nested classads correctly - still does not work for expressions (are evaluated to "undefined") --- diff --git a/org.glite.jp.primary/src/classad_plugin.c b/org.glite.jp.primary/src/classad_plugin.c index 6bd8328..1d7b6ec 100644 --- a/org.glite.jp.primary/src/classad_plugin.c +++ b/org.glite.jp.primary/src/classad_plugin.c @@ -176,13 +176,17 @@ static int classad_query(void *fpctx,void *handle, const char *attr,glite_jp_att return glite_jp_stack_error(ctx,&err); } - if (cclassad_evaluate_to_string(h->ad, strrchr(attr, ':')+1, &str)) { + if (!cclassad_evaluate_to_string(h->ad, strrchr(attr, ':')+1, &str) && + cclassad_evaluate_to_expr(h->ad, strrchr(attr, ':')+1, &str) && + !strcasecmp(str,"undefined")) { free(str); str = NULL; } + + if (str) { //struct stat fattr; /*XXX ignore error */ //glite_jppsbe_file_attrs(ctx, h->bhandle, &fattr); av = calloc(2, sizeof(glite_jp_attrval_t)); av[0].name = strdup(attr); - av[0].value = strdup(str); + av[0].value = str; str = NULL; av[0].size = -1; av[0].timestamp = h->timestamp; av[0].origin = GLITE_JP_ATTR_ORIG_FILE;