From: Aleš Křenek Date: Wed, 16 Nov 2005 11:49:07 +0000 (+0000) Subject: don't free attribute value from feed query X-Git-Url: http://scientific.zcu.cz/git/?a=commitdiff_plain;h=738642d94edfe92a5d7ca12a6574e61176b43e70;p=jra1mw.git don't free attribute value from feed query --- diff --git a/org.glite.jp.primary/src/feed.c b/org.glite.jp.primary/src/feed.c index 845453c..b9d8195 100644 --- a/org.glite.jp.primary/src/feed.c +++ b/org.glite.jp.primary/src/feed.c @@ -99,7 +99,7 @@ static int match_feed( const glite_jp_attrval_t attrs[] ) { - int i,fed; + int i,fed,ret = 0; int qi[QUERY_MAX]; char *owner = NULL; glite_jp_attrval_t meta[QUERY_MAX+1]; @@ -140,23 +140,27 @@ static int match_feed( j=0; for (i=0; feed->qry[i].attr; i++) if (!qi[i]) { assert(jqry[i].attr; + meta[j].name = strdup(feed->qry[i].attr); qi2[j] = i; j++; } if (glite_jppsbe_get_job_metadata(ctx,job,meta)) { glite_jp_error_t err; + memset(&err,0,sizeof err); err.code = EIO; err.source = __FUNCTION__; err.desc = "complete query"; - return glite_jp_stack_error(ctx,&err); + ret = glite_jp_stack_error(ctx,&err); + goto cleanup; } for (i=0; meta[i].name; i++) { - if (!check_qry_item(ctx,feed->qry+qi2[i],meta+i)) - return 0; + if (!check_qry_item(ctx,feed->qry+qi2[i],meta+i)) { + ret = 0; + goto cleanup; + } if (!strcmp(meta[i].name,GLITE_JP_ATTR_OWNER)) owner = meta[i].value; } } @@ -181,8 +185,10 @@ static int match_feed( } glite_jpps_single_feed(ctx,feed->id,0,feed->destination,job,owner,attrs); } + +cleanup: for (i=0; meta[i].name; i++) glite_jp_attrval_free(meta+i,0); - return 0; + return ret; } /* TODO: overit, ze do dalsich atributu se leze az kdyz matchuji metadata