Commit 04cde66b802b7744da7127ef0a9807912e2445ac

Authored by Stéphane Raimbault
1 parent eac43475

Fix free() calls ordering in modbus_mapping_new

Reported by Viet Nguyen Quoc.
Showing 1 changed file with 9 additions and 9 deletions
src/modbus.c
... ... @@ -1358,8 +1358,8 @@ modbus_mapping_t* modbus_mapping_new(int nb_bits, int nb_input_bits,
1358 1358 mb_mapping->tab_input_bits =
1359 1359 (uint8_t *) malloc(nb_input_bits * sizeof(uint8_t));
1360 1360 if (mb_mapping->tab_input_bits == NULL) {
1361   - free(mb_mapping);
1362 1361 free(mb_mapping->tab_bits);
  1362 + free(mb_mapping);
1363 1363 return NULL;
1364 1364 }
1365 1365 memset(mb_mapping->tab_input_bits, 0, nb_input_bits * sizeof(uint8_t));
... ... @@ -1373,9 +1373,9 @@ modbus_mapping_t* modbus_mapping_new(int nb_bits, int nb_input_bits,
1373 1373 mb_mapping->tab_registers =
1374 1374 (uint16_t *) malloc(nb_registers * sizeof(uint16_t));
1375 1375 if (mb_mapping->tab_registers == NULL) {
1376   - free(mb_mapping);
1377   - free(mb_mapping->tab_bits);
1378 1376 free(mb_mapping->tab_input_bits);
  1377 + free(mb_mapping->tab_bits);
  1378 + free(mb_mapping);
1379 1379 return NULL;
1380 1380 }
1381 1381 memset(mb_mapping->tab_registers, 0, nb_registers * sizeof(uint16_t));
... ... @@ -1389,10 +1389,10 @@ modbus_mapping_t* modbus_mapping_new(int nb_bits, int nb_input_bits,
1389 1389 mb_mapping->tab_input_registers =
1390 1390 (uint16_t *) malloc(nb_input_registers * sizeof(uint16_t));
1391 1391 if (mb_mapping->tab_input_registers == NULL) {
1392   - free(mb_mapping);
1393   - free(mb_mapping->tab_bits);
1394   - free(mb_mapping->tab_input_bits);
1395 1392 free(mb_mapping->tab_registers);
  1393 + free(mb_mapping->tab_input_bits);
  1394 + free(mb_mapping->tab_bits);
  1395 + free(mb_mapping);
1396 1396 return NULL;
1397 1397 }
1398 1398 memset(mb_mapping->tab_input_registers, 0,
... ... @@ -1405,10 +1405,10 @@ modbus_mapping_t* modbus_mapping_new(int nb_bits, int nb_input_bits,
1405 1405 /* Frees the 4 arrays */
1406 1406 void modbus_mapping_free(modbus_mapping_t *mb_mapping)
1407 1407 {
1408   - free(mb_mapping->tab_bits);
1409   - free(mb_mapping->tab_input_bits);
1410   - free(mb_mapping->tab_registers);
1411 1408 free(mb_mapping->tab_input_registers);
  1409 + free(mb_mapping->tab_registers);
  1410 + free(mb_mapping->tab_input_bits);
  1411 + free(mb_mapping->tab_bits);
1412 1412 free(mb_mapping);
1413 1413 }
1414 1414  
... ...