Commit 04cde66b802b7744da7127ef0a9807912e2445ac
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,8 +1358,8 @@ modbus_mapping_t* modbus_mapping_new(int nb_bits, int nb_input_bits, | ||
| 1358 | mb_mapping->tab_input_bits = | 1358 | mb_mapping->tab_input_bits = |
| 1359 | (uint8_t *) malloc(nb_input_bits * sizeof(uint8_t)); | 1359 | (uint8_t *) malloc(nb_input_bits * sizeof(uint8_t)); |
| 1360 | if (mb_mapping->tab_input_bits == NULL) { | 1360 | if (mb_mapping->tab_input_bits == NULL) { |
| 1361 | - free(mb_mapping); | ||
| 1362 | free(mb_mapping->tab_bits); | 1361 | free(mb_mapping->tab_bits); |
| 1362 | + free(mb_mapping); | ||
| 1363 | return NULL; | 1363 | return NULL; |
| 1364 | } | 1364 | } |
| 1365 | memset(mb_mapping->tab_input_bits, 0, nb_input_bits * sizeof(uint8_t)); | 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,9 +1373,9 @@ modbus_mapping_t* modbus_mapping_new(int nb_bits, int nb_input_bits, | ||
| 1373 | mb_mapping->tab_registers = | 1373 | mb_mapping->tab_registers = |
| 1374 | (uint16_t *) malloc(nb_registers * sizeof(uint16_t)); | 1374 | (uint16_t *) malloc(nb_registers * sizeof(uint16_t)); |
| 1375 | if (mb_mapping->tab_registers == NULL) { | 1375 | if (mb_mapping->tab_registers == NULL) { |
| 1376 | - free(mb_mapping); | ||
| 1377 | - free(mb_mapping->tab_bits); | ||
| 1378 | free(mb_mapping->tab_input_bits); | 1376 | free(mb_mapping->tab_input_bits); |
| 1377 | + free(mb_mapping->tab_bits); | ||
| 1378 | + free(mb_mapping); | ||
| 1379 | return NULL; | 1379 | return NULL; |
| 1380 | } | 1380 | } |
| 1381 | memset(mb_mapping->tab_registers, 0, nb_registers * sizeof(uint16_t)); | 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,10 +1389,10 @@ modbus_mapping_t* modbus_mapping_new(int nb_bits, int nb_input_bits, | ||
| 1389 | mb_mapping->tab_input_registers = | 1389 | mb_mapping->tab_input_registers = |
| 1390 | (uint16_t *) malloc(nb_input_registers * sizeof(uint16_t)); | 1390 | (uint16_t *) malloc(nb_input_registers * sizeof(uint16_t)); |
| 1391 | if (mb_mapping->tab_input_registers == NULL) { | 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 | free(mb_mapping->tab_registers); | 1392 | free(mb_mapping->tab_registers); |
| 1393 | + free(mb_mapping->tab_input_bits); | ||
| 1394 | + free(mb_mapping->tab_bits); | ||
| 1395 | + free(mb_mapping); | ||
| 1396 | return NULL; | 1396 | return NULL; |
| 1397 | } | 1397 | } |
| 1398 | memset(mb_mapping->tab_input_registers, 0, | 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,10 +1405,10 @@ modbus_mapping_t* modbus_mapping_new(int nb_bits, int nb_input_bits, | ||
| 1405 | /* Frees the 4 arrays */ | 1405 | /* Frees the 4 arrays */ |
| 1406 | void modbus_mapping_free(modbus_mapping_t *mb_mapping) | 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 | free(mb_mapping->tab_input_registers); | 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 | free(mb_mapping); | 1412 | free(mb_mapping); |
| 1413 | } | 1413 | } |
| 1414 | 1414 |