memory leaks fixed
authorMiloš Mulač <mulac@civ.zcu.cz>
Wed, 4 Jun 2008 11:52:04 +0000 (11:52 +0000)
committerMiloš Mulač <mulac@civ.zcu.cz>
Wed, 4 Jun 2008 11:52:04 +0000 (11:52 +0000)
- possible to purge tens kilo jobs without problems

org.glite.lb.server/src/get_events.c.T
org.glite.lb.server/src/srv_purge.c

index 8dc5f9f..03d0908 100644 (file)
@@ -43,11 +43,13 @@ int edg_wll_get_event_flesh(edg_wll_Context ctx,int n,edg_wll_Event *e)
                //fprintf(stderr, "got ulm: '%s'\n", nameval[0]);
                // nasty ;-)
                edg_wll_ParseEvent(ctx,nameval[0],&f);
+               free(nameval[0]);
                memcpy(e, f, sizeof *e);
                free(f);
                ret=edg_wll_CheckEvent(ctx,e);
        } else ret = ENOENT;
        free(q); q = NULL;
+       glite_lbu_FreeStmt(&sh);
 
        // old way keeped for compatibility/slow migration
        if (ret != 0) {
index 25c41bf..e3a7b5d 100644 (file)
@@ -427,7 +427,6 @@ static int dump_events(edg_wll_Context ctx, glite_jobid_const_t job, int dump, c
        if (convert_event_head(ctx,res,&e) || edg_wll_get_event_flesh(ctx,event,&e))
        {
                char    *et,*ed, *dbjob;
-               int     i;
 
 
        /* Most likely sort of internal inconsistency. 
@@ -438,7 +437,6 @@ static int dump_events(edg_wll_Context ctx, glite_jobid_const_t job, int dump, c
                fprintf(stderr,"%s event %d: %s (%s)\n",dbjob,event,et,ed);
                syslog(LOG_WARNING,"%s event %d: %s (%s)",dbjob,event,et,ed);
                free(et); free(ed); free(dbjob);
-               for (i=0; i<sizofa(res); i++) free(res[i]);
                edg_wll_ResetError(ctx);
        }
        else {
@@ -637,8 +635,12 @@ int purge_one(edg_wll_Context ctx,glite_jobid_const_t job,int dump, int purge, i
                        event = atoi(res[0]);
 
                        if (dump >= 0) {
+                               int ret_dump, i;
+
                                assert(ret == 10);
-                               if (dump_events( ctx, job, dump, (char **) &res)) goto rollback;
+                               ret_dump = dump_events( ctx, job, dump, (char **) &res);
+                               for (i=0; i<sizofa(res); i++) free(res[i]);
+                               if (ret_dump) goto rollback;
                        }
 
                        if ( purge )