diff --git a/src/server/distrend.c b/src/server/distrend.c --- a/src/server/distrend.c +++ b/src/server/distrend.c @@ -270,7 +270,7 @@ int prepare_distrenjob(struct distrenjob /* prepares all the frames by setting that status to "unassigned" */ counter2 = start_frame; - for(counter = 0; counter <= (end_frame- start_frame + 1); counter++){ + for(counter = 0; counter <= distrenjob->total_frames; counter++){ distrenjob->frameset[counter].num = counter2; distrenjob->frameset[counter].status = FRAMESETSTATUS_UNASSIGNED; @@ -652,15 +652,6 @@ struct distrenjob *createJobFromXML(int distrenjob->total_frames = atoi((char*)xmlGetProp(cur, (xmlChar*)"end_frame")) - start_frame + 1; distrenjob->output_format = (char*)xmlGetProp(cur, (xmlChar*)"output_format"); - counter2 = start_frame; - for(counter = 0; counter <= distrenjob->total_frames; counter++) - { - distrenjob->frameset[counter].num = counter2; - distrenjob->frameset[counter].status = FRAMESETSTATUS_UNASSIGNED; - - counter2++; - } - cur = cur->next; distrenjob->watchdog_forgiveness = atoi((char*)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1)); @@ -676,6 +667,17 @@ struct distrenjob *createJobFromXML(int xmlFreeDoc(doc); + distrenjob->frameset = malloc(sizeof(struct frameset) * distrenjob->total_frames); + + // change the status of all frames to "unassigned" + counter2 = start_frame; + for(counter = 0; counter <= (end_frame- start_frame + 1); counter++){ + distrenjob->frameset[counter].num = counter2; + distrenjob->frameset[counter].status = FRAMESETSTATUS_UNASSIGNED; + + counter2++; + } + restoreJobState(distrenjob); return distrenjob; }