@@ -53,7 +53,7 @@ void fossil_mock_destroy(fossil_mock_calllist_t *list) {
5353}
5454
5555void fossil_mock_add_call (fossil_mock_calllist_t * list , const char * function_name , fossil_mock_pizza_t * arguments , int num_args ) {
56- if (!list || !function_name || !arguments ) {
56+ if (!list || !function_name || ( !arguments && num_args > 0 ) ) {
5757 return ;
5858 }
5959
@@ -68,34 +68,38 @@ void fossil_mock_add_call(fossil_mock_calllist_t *list, const char *function_nam
6868 return ;
6969 }
7070
71- call -> arguments = (fossil_mock_pizza_t * )pizza_sys_memory_alloc (num_args * sizeof (fossil_mock_pizza_t ));
72- if (!call -> arguments ) {
73- pizza_sys_memory_free (call -> function_name );
74- pizza_sys_memory_free (call );
75- return ;
76- }
77-
78- for (int i = 0 ; i < num_args ; ++ i ) {
79- call -> arguments [i ].type = arguments [i ].type ;
80- call -> arguments [i ].value .data = pizza_io_cstr_dup (arguments [i ].value .data );
81- call -> arguments [i ].value .mutable_flag = arguments [i ].value .mutable_flag ;
82- call -> arguments [i ].attribute .name = pizza_io_cstr_dup (arguments [i ].attribute .name );
83- call -> arguments [i ].attribute .description = pizza_io_cstr_dup (arguments [i ].attribute .description );
84- call -> arguments [i ].attribute .id = pizza_io_cstr_dup (arguments [i ].attribute .id );
85-
86- if (!call -> arguments [i ].value .data || !call -> arguments [i ].attribute .name ||
87- !call -> arguments [i ].attribute .description || !call -> arguments [i ].attribute .id ) {
88- for (int j = 0 ; j <= i ; ++ j ) {
89- pizza_sys_memory_free (call -> arguments [j ].value .data );
90- pizza_sys_memory_free (call -> arguments [j ].attribute .name );
91- pizza_sys_memory_free (call -> arguments [j ].attribute .description );
92- pizza_sys_memory_free (call -> arguments [j ].attribute .id );
93- }
94- pizza_sys_memory_free (call -> arguments );
71+ if (num_args > 0 ) {
72+ call -> arguments = (fossil_mock_pizza_t * )pizza_sys_memory_alloc (num_args * sizeof (fossil_mock_pizza_t ));
73+ if (!call -> arguments ) {
9574 pizza_sys_memory_free (call -> function_name );
9675 pizza_sys_memory_free (call );
9776 return ;
9877 }
78+
79+ for (int i = 0 ; i < num_args ; ++ i ) {
80+ call -> arguments [i ].type = arguments [i ].type ;
81+ call -> arguments [i ].value .data = pizza_io_cstr_dup (arguments [i ].value .data );
82+ call -> arguments [i ].value .mutable_flag = arguments [i ].value .mutable_flag ;
83+ call -> arguments [i ].attribute .name = pizza_io_cstr_dup (arguments [i ].attribute .name );
84+ call -> arguments [i ].attribute .description = pizza_io_cstr_dup (arguments [i ].attribute .description );
85+ call -> arguments [i ].attribute .id = pizza_io_cstr_dup (arguments [i ].attribute .id );
86+
87+ if (!call -> arguments [i ].value .data || !call -> arguments [i ].attribute .name ||
88+ !call -> arguments [i ].attribute .description || !call -> arguments [i ].attribute .id ) {
89+ for (int j = 0 ; j <= i ; ++ j ) {
90+ pizza_sys_memory_free (call -> arguments [j ].value .data );
91+ pizza_sys_memory_free (call -> arguments [j ].attribute .name );
92+ pizza_sys_memory_free (call -> arguments [j ].attribute .description );
93+ pizza_sys_memory_free (call -> arguments [j ].attribute .id );
94+ }
95+ pizza_sys_memory_free (call -> arguments );
96+ pizza_sys_memory_free (call -> function_name );
97+ pizza_sys_memory_free (call );
98+ return ;
99+ }
100+ }
101+ } else {
102+ call -> arguments = NULL ;
99103 }
100104
101105 call -> num_args = num_args ;
0 commit comments