| 527 | */ |
| 528 | |
| 529 | void |
| 530 | cgiSetSize(const char *name, /* I - Name of variable */ |
| 531 | int size) /* I - Number of elements (0 to N) */ |
| 532 | { |
| 533 | int i; /* Looping var */ |
| 534 | _cgi_var_t *var; /* Returned variable */ |
| 535 | |
| 536 | |
| 537 | if (name == NULL || size < 0 || size > 100000) |
| 538 | return; |
| 539 | |
| 540 | if ((var = cgi_find_variable(name)) == NULL) |
| 541 | return; |
| 542 | |
| 543 | if (size >= var->avalues) |
| 544 | { |
| 545 | char **temp; /* Temporary pointer */ |
| 546 | |
| 547 | temp = (char **)realloc((void *)(var->values), sizeof(char *) * (size_t)(size + 16)); |
| 548 | if (!temp) |
| 549 | return; |
| 550 | |
| 551 | var->avalues = size + 16; |
| 552 | var->values = temp; |
| 553 | } |
| 554 | |
| 555 | if (size > var->nvalues) |
| 556 | { |
| 557 | for (i = var->nvalues; i < size; i ++) |
| 558 | var->values[i] = NULL; |
| 559 | } |
| 560 | else if (size < var->nvalues) |
| 561 | { |
| 562 | for (i = size; i < var->nvalues; i ++) |
| 563 | if (var->values[i]) |
| 564 | free((void *)(var->values[i])); |
| 565 | } |
| 566 | |
| 567 | var->nvalues = size; |
| 568 | } |
| 569 | |
| 570 | |
| 571 | /* |
no test coverage detected