Skip to content

Commit 60de243

Browse files
authored
create_coboldata: prefer local buffers over temporary mallocs
here only for USAGE DISPLAY (I have to merge in my local changes that I did for COMP-3 last year)
1 parent 524d1f5 commit 60de243

File tree

1 file changed

+3
-21
lines changed

1 file changed

+3
-21
lines changed

dblib/ocesql.c

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2767,12 +2767,7 @@ create_coboldata(SQLVAR *sv, int index, char *retstr){
27672767

27682768
int fillzero;
27692769
int zcount;
2770-
char *final;
2771-
int finalbuflen;
2772-
2773-
// fill zero
2774-
finalbuflen = sv->length + TERMINAL_LENGTH;
2775-
final = (char *)calloc(finalbuflen, sizeof(char));
2770+
char final[MAX_DIGITS + 1 + TERMINAL_LENGTH] = { 0 };
27762771

27772772
// before decimal point
27782773
int beforedp = 0;
@@ -2813,7 +2808,6 @@ create_coboldata(SQLVAR *sv, int index, char *retstr){
28132808
}
28142809

28152810
memcpy(addr, final, sv->length);
2816-
free(final);
28172811
break;
28182812
}
28192813
case OCDB_TYPE_SIGNED_NUMBER_TC:
@@ -2824,14 +2818,9 @@ create_coboldata(SQLVAR *sv, int index, char *retstr){
28242818

28252819
int fillzero;
28262820
int zcount;
2827-
char *final;
2828-
int finalbuflen;
2821+
char final[MAX_DIGITS + SIGN_LENGTH + 1 + TERMINAL_LENGTH] = {0};
28292822
int final_length;
28302823

2831-
// fill zero
2832-
finalbuflen = sv->length;
2833-
final = (char *)calloc(finalbuflen, sizeof(char));
2834-
28352824
if(retstr[0] == '-'){
28362825
is_negative = true;
28372826
value = retstr + 1;
@@ -2883,7 +2872,6 @@ create_coboldata(SQLVAR *sv, int index, char *retstr){
28832872
}
28842873

28852874
memcpy(addr, final, sv->length);
2886-
free(final);
28872875
break;
28882876
}
28892877
case OCDB_TYPE_SIGNED_NUMBER_LS:
@@ -2893,12 +2881,7 @@ create_coboldata(SQLVAR *sv, int index, char *retstr){
28932881

28942882
int fillzero;
28952883
int zcount;
2896-
char *final;
2897-
int finalbuflen;
2898-
2899-
// fill zero
2900-
finalbuflen = SIGN_LENGTH + sv->length + TERMINAL_LENGTH;
2901-
final = (char *)calloc(finalbuflen, sizeof(char));
2884+
char final[MAX_DIGITS + SIGN_LENGTH + 1 + TERMINAL_LENGTH] = {0};
29022885

29032886
if(retstr[0] == '-'){
29042887
final[0] = '-';
@@ -2947,7 +2930,6 @@ create_coboldata(SQLVAR *sv, int index, char *retstr){
29472930
}
29482931

29492932
memcpy(addr, final, sv->length + SIGN_LENGTH);
2950-
free(final);
29512933
break;
29522934
}
29532935
case OCDB_TYPE_UNSIGNED_NUMBER_PD:

0 commit comments

Comments
 (0)