Skip to content

Commit 972fba7

Browse files
committed
check for fails of calloc(s)
1 parent 81351e0 commit 972fba7

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

AdptArray.c

+19-14
Original file line numberDiff line numberDiff line change
@@ -62,36 +62,41 @@ Result SetAdptArrayAt(PAdptArray paa, int index, PElement pe)
6262
{
6363
paa->delete_element(paa->arr[index]);
6464
}
65-
66-
// assign a copy of the new element.
67-
paa->arr[index] = paa->copy_element(pe);
6865
}
6966
else
7067
{
71-
// the first time
68+
// if this is the first time of inserting element.
7269
if (!paa->arr)
7370
{
7471
paa->arr = (PElement*)calloc(index + 1, sizeof(PElement));
72+
if(paa->arr)
73+
{
74+
paa->size = index + 1;
75+
}
76+
else{ paa->size = -1; }
7577
}
7678
else
7779
{
7880
//paa->arr = (PElement*)realloc(paa->arr, sizeof(PElement) * (index + 1));
7981
PElement* new_arr = (PElement*)calloc(index + 1, sizeof(PElement));
80-
for (int i = 0; i < paa->size; i++)
82+
if(new_arr)
8183
{
82-
new_arr[i] = paa->arr[i];
84+
for (int i = 0; i < paa->size; i++)
85+
{
86+
new_arr[i] = paa->arr[i];
87+
}
88+
free(paa->arr);
89+
90+
paa->arr = new_arr;
91+
paa->size = index + 1;
8392
}
84-
free(paa->arr);
85-
paa->arr = new_arr;
93+
else { paa->size = -1; }
8694
}
87-
88-
// assign a copy of the new element.
89-
paa->arr[index] = paa->copy_element(pe);
90-
91-
// update the new size. (-1 at fails)
92-
paa->size = (paa->arr != NULL) ? index + 1 : -1;
9395
}
9496

97+
// assign a copy of the new element.
98+
if(paa->size != -1) {paa->arr[index] = paa->copy_element(pe);}
99+
95100
return paa->size != -1 ? SUCCESS : FAIL;
96101
}
97102

0 commit comments

Comments
 (0)