@@ -205,13 +205,21 @@ void basic_set_string_variable(const char* var, const char* value, struct basic_
205205 if (list [local ] == NULL ) {
206206 if (local ) {
207207 ctx -> local_string_variables [ctx -> call_stack_ptr ] = buddy_malloc (ctx -> allocator , sizeof (struct ub_var_string ));
208+ if (!ctx -> local_string_variables [ctx -> call_stack_ptr ]) {
209+ tokenizer_error_print (ctx , "Out of memory" );
210+ return ;
211+ }
208212 ctx -> local_string_variables [ctx -> call_stack_ptr ]-> next = NULL ;
209213 ctx -> local_string_variables [ctx -> call_stack_ptr ]-> varname = buddy_strdup (ctx -> allocator , var );
210214 ctx -> local_string_variables [ctx -> call_stack_ptr ]-> value = buddy_strdup (ctx -> allocator , value );
211215 ctx -> local_string_variables [ctx -> call_stack_ptr ]-> global = global ;
212216 ctx -> local_string_variables [ctx -> call_stack_ptr ]-> name_length = len ;
213217 } else {
214218 ctx -> str_variables = buddy_malloc (ctx -> allocator , sizeof (struct ub_var_string ));
219+ if (!ctx -> str_variables ) {
220+ tokenizer_error_print (ctx , "Out of memory" );
221+ return ;
222+ }
215223 ctx -> str_variables -> next = NULL ;
216224 ctx -> str_variables -> varname = buddy_strdup (ctx -> allocator , var );
217225 ctx -> str_variables -> value = buddy_strdup (ctx -> allocator , value );
@@ -239,6 +247,10 @@ void basic_set_string_variable(const char* var, const char* value, struct basic_
239247 }
240248 }
241249 struct ub_var_string * newvar = buddy_malloc (ctx -> allocator , sizeof (struct ub_var_string ));
250+ if (!newvar ) {
251+ tokenizer_error_print (ctx , "Out of memory" );
252+ return ;
253+ }
242254 newvar -> next = (local ? ctx -> local_string_variables [ctx -> call_stack_ptr ] : ctx -> str_variables );
243255 newvar -> varname = buddy_strdup (ctx -> allocator , var );
244256 newvar -> value = buddy_strdup (ctx -> allocator , value );
@@ -266,27 +278,29 @@ void basic_set_int_variable(const char* var, int64_t value, struct basic_ctx* ct
266278 }
267279 size_t len = strlen (var );
268280 if (list [local ] == NULL ) {
269- if (setting_n ) {
270- dprintf ("Setting N with list[local] == NULL (list is empty)\n" );
271- }
272281 if (local ) {
273- if (setting_n ) dprintf ("Setting N in local stack set (list is empty)\n" );
274282 ctx -> local_int_variables [ctx -> call_stack_ptr ] = buddy_malloc (ctx -> allocator , sizeof (struct ub_var_int ));
283+ if (!ctx -> local_int_variables [ctx -> call_stack_ptr ]) {
284+ tokenizer_error_print (ctx , "Out of memory" );
285+ return ;
286+ }
275287 ctx -> local_int_variables [ctx -> call_stack_ptr ]-> next = NULL ;
276288 ctx -> local_int_variables [ctx -> call_stack_ptr ]-> varname = buddy_strdup (ctx -> allocator , var );
277289 ctx -> local_int_variables [ctx -> call_stack_ptr ]-> name_length = len ;
278290 ctx -> local_int_variables [ctx -> call_stack_ptr ]-> value = value ;
279291 } else {
280- if (setting_n ) dprintf ("Set N in global set\n" );
281292 ctx -> int_variables = buddy_malloc (ctx -> allocator , sizeof (struct ub_var_int ));
293+ if (!ctx -> int_variables ) {
294+ tokenizer_error_print (ctx , "Out of memory" );
295+ return ;
296+ }
282297 ctx -> int_variables -> next = NULL ;
283298 ctx -> int_variables -> varname = buddy_strdup (ctx -> allocator , var );
284299 ctx -> int_variables -> name_length = len ;
285300 ctx -> int_variables -> value = value ;
286301 }
287302 return ;
288303 } else {
289- if (setting_n ) dprintf ("Set N, non-empty, %s\n" , local ? "locals" : "globals" );
290304 struct ub_var_int * cur = local ? ctx -> local_int_variables [ctx -> call_stack_ptr ] : ctx -> int_variables ;
291305 for (; cur ; cur = cur -> next ) {
292306 if (len == cur -> name_length && !strcmp (var , cur -> varname )) {
@@ -298,6 +312,10 @@ void basic_set_int_variable(const char* var, int64_t value, struct basic_ctx* ct
298312 }
299313 //dprintf("Set int variable '%s' to '%d'\n", var, value);
300314 struct ub_var_int * newvar = buddy_malloc (ctx -> allocator , sizeof (struct ub_var_int ));
315+ if (!newvar ) {
316+ tokenizer_error_print (ctx , "Out of memory" );
317+ return ;
318+ }
301319 newvar -> next = (local ? ctx -> local_int_variables [ctx -> call_stack_ptr ] : ctx -> int_variables );
302320 newvar -> varname = buddy_strdup (ctx -> allocator , var );
303321 newvar -> name_length = len ;
@@ -328,12 +346,20 @@ void basic_set_double_variable(const char* var, double value, struct basic_ctx*
328346 if (list [local ] == NULL ) {
329347 if (local ) {
330348 ctx -> local_double_variables [ctx -> call_stack_ptr ] = buddy_malloc (ctx -> allocator , sizeof (struct ub_var_double ));
349+ if (!ctx -> local_double_variables [ctx -> call_stack_ptr ]) {
350+ tokenizer_error_print (ctx , "Out of memory" );
351+ return ;
352+ }
331353 ctx -> local_double_variables [ctx -> call_stack_ptr ]-> next = NULL ;
332354 ctx -> local_double_variables [ctx -> call_stack_ptr ]-> varname = buddy_strdup (ctx -> allocator , var );
333355 ctx -> local_double_variables [ctx -> call_stack_ptr ]-> name_length = len ;
334356 ctx -> local_double_variables [ctx -> call_stack_ptr ]-> value = value ;
335357 } else {
336358 ctx -> double_variables = buddy_malloc (ctx -> allocator , sizeof (struct ub_var_double ));
359+ if (!ctx -> double_variables ) {
360+ tokenizer_error_print (ctx , "Out of memory" );
361+ return ;
362+ }
337363 ctx -> double_variables -> next = NULL ;
338364 ctx -> double_variables -> varname = buddy_strdup (ctx -> allocator , var );
339365 ctx -> double_variables -> name_length = len ;
@@ -350,8 +376,11 @@ void basic_set_double_variable(const char* var, double value, struct basic_ctx*
350376 return ;
351377 }
352378 }
353- //dprintf("Set double variable '%s' to '%s'\n", var, double_to_string(value, buffer, MAX_STRINGLEN, 0));
354379 struct ub_var_double * newvar = buddy_malloc (ctx -> allocator , sizeof (struct ub_var_double ));
380+ if (!newvar ) {
381+ tokenizer_error_print (ctx , "Out of memory" );
382+ return ;
383+ }
355384 newvar -> next = (local ? ctx -> local_double_variables [ctx -> call_stack_ptr ] : ctx -> double_variables );
356385 newvar -> varname = buddy_strdup (ctx -> allocator , var );
357386 newvar -> name_length = len ;
0 commit comments