]> rtime.felk.cvut.cz Git - frescor/frsh.git/commitdiff
fcb: Deallocate res_array properly
authorMichal Sojka <sojkam1@fel.cvut.cz>
Fri, 25 Jun 2010 07:44:34 +0000 (09:44 +0200)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Fri, 25 Jun 2010 07:44:34 +0000 (09:44 +0200)
fres/cbroker/fcb.c

index 7fc217aa4bc07e867713931634c803876804f851..a1d6014bde8297bf0d219e624740104e0c39458f 100644 (file)
@@ -1074,7 +1074,6 @@ transaction_get_resources(struct fcb *fcb, struct fcb_contract *fc[],
        struct res_key key;
        int ret;
 
-       res_array_init_array_field(res_array);
        for (i = 0; i < num; i++) {
                get_fc_res_key(fc[i], &key);
                resource = fcb_resource_find(fcb, &key);
@@ -1120,6 +1119,7 @@ negotiate_transaction(fres_contract_broker _obj,
        if (ret)
                goto err_free_fcb_contracts;
 
+       res_array_init_array_field(&res_array);
        ret = transaction_get_resources(fcb, fcb_contracts, num, &res_array);
 
        gsa_cust_for_each(res_array, &res_array, resource) {
@@ -1149,14 +1149,12 @@ negotiate_transaction(fres_contract_broker _obj,
                }
        }
        
+       res_array_delete_all(&res_array);
        return 0;
 err_cancel_reservation:
        gsa_cust_for_each(res_array, &res_array, resource) {
                cancel_reservations(resource);
        }
-err_free_res_contracts:
-       forb_sequence_free_buf(&res_contracts, forb_no_destructor);
-err_free_resources:
        res_array_delete_all(&res_array);
 err_free_fcb_contracts:
        free_fcb_contracts(fcb_contracts, num);