@@ -231,10 +231,10 @@ SEXP_t *SEAP_cmd_exec (SEAP_CTX_t *ctx,
231
231
SEAP_cmdfn_t func ,
232
232
void * funcarg )
233
233
{
234
- SEAP_desc_t * dsc ;
235
- SEAP_cmdrec_t * rec ;
234
+ SEAP_desc_t * dsc = NULL ;
235
+ SEAP_cmdrec_t * rec = NULL ;
236
236
SEAP_cmdtbl_t * tbl [2 ];
237
- SEXP_t * res ;
237
+ SEXP_t * res = NULL ;
238
238
int8_t i ;
239
239
240
240
_A (ctx != NULL );
@@ -348,14 +348,17 @@ SEXP_t *SEAP_cmd_exec (SEAP_CTX_t *ctx,
348
348
dI ("Can't register async command handler: id=%u, tbl=%p, sd=%u: already registered." ,
349
349
rec -> code , (void * )dsc -> cmd_w_table , sd );
350
350
SEAP_cmdrec_free (rec );
351
+ SEAP_packet_free (packet );
351
352
return (NULL );
352
353
case -1 :
353
354
dI ("Can't register async command handler: id=%u, tbl=%p, sd=%u: errno=%u, %s." ,
354
355
rec -> code , (void * )dsc -> cmd_w_table , sd , errno , strerror (errno ));
355
356
SEAP_cmdrec_free (rec );
357
+ SEAP_packet_free (packet );
356
358
return (NULL );
357
359
default :
358
360
SEAP_cmdrec_free (rec );
361
+ SEAP_packet_free (packet );
359
362
errno = EDOOFUS ;
360
363
return (NULL );
361
364
}
@@ -364,7 +367,7 @@ SEXP_t *SEAP_cmd_exec (SEAP_CTX_t *ctx,
364
367
protect_errno {
365
368
dI ("FAIL: errno=%u, %s." , errno , strerror (errno ));
366
369
SEAP_cmdtbl_del (dsc -> cmd_w_table , rec );
367
- SEAP_packet_free (packet );
370
+ SEAP_packet_free (packet );
368
371
}
369
372
return (NULL );
370
373
}
@@ -389,6 +392,7 @@ SEXP_t *SEAP_cmd_exec (SEAP_CTX_t *ctx,
389
392
390
393
if (SEAP_packet_recv (ctx , sd , & packet_rcv ) != 0 ) {
391
394
dI ("FAIL: ctx=%p, sd=%d, errno=%u, %s." , ctx , sd , errno , strerror (errno ));
395
+ SEAP_packet_free (packet );
392
396
return (NULL );
393
397
}
394
398
@@ -399,6 +403,7 @@ SEXP_t *SEAP_cmd_exec (SEAP_CTX_t *ctx,
399
403
SEAP_packet_free (packet_rcv );
400
404
break ;
401
405
default :
406
+ SEAP_packet_free (packet );
402
407
errno = EDOOFUS ;
403
408
return (NULL );
404
409
}
@@ -445,7 +450,7 @@ SEXP_t *SEAP_cmd_exec (SEAP_CTX_t *ctx,
445
450
pthread_mutex_unlock (& (h .mtx ));
446
451
pthread_cond_destroy (& (h .cond ));
447
452
pthread_mutex_destroy (& (h .mtx ));
448
- SEAP_packet_free (packet );
453
+ SEAP_packet_free (packet );
449
454
450
455
return (res );
451
456
}
@@ -465,14 +470,17 @@ SEXP_t *SEAP_cmd_exec (SEAP_CTX_t *ctx,
465
470
dI ("Can't register async command handler: id=%u, tbl=%p, sd=%u: already registered." ,
466
471
rec -> code , (void * )dsc -> cmd_w_table , sd );
467
472
SEAP_cmdrec_free (rec );
473
+ SEAP_packet_free (packet );
468
474
return (NULL );
469
475
case -1 :
470
476
dI ("Can't register async command handler: id=%u, tbl=%p, sd=%u: errno=%u, %s." ,
471
477
rec -> code , (void * )dsc -> cmd_w_table , sd , errno , strerror (errno ));
472
- SEAP_cmdrec_free (rec );
478
+ SEAP_cmdrec_free (rec );
479
+ SEAP_packet_free (packet );
473
480
return (NULL );
474
481
default :
475
- SEAP_cmdrec_free (rec );
482
+ SEAP_cmdrec_free (rec );
483
+ SEAP_packet_free (packet );
476
484
errno = EDOOFUS ;
477
485
return (NULL );
478
486
}
@@ -481,17 +489,17 @@ SEXP_t *SEAP_cmd_exec (SEAP_CTX_t *ctx,
481
489
protect_errno {
482
490
dI ("FAIL: errno=%u, %s." , errno , strerror (errno ));
483
491
SEAP_cmdtbl_del (dsc -> cmd_w_table , rec );
484
- SEAP_cmdrec_free (rec );
485
- SEAP_packet_free (packet );
492
+ SEAP_packet_free (packet );
486
493
}
487
494
return (NULL );
488
495
}
489
496
490
- SEAP_packet_free (packet );
497
+ SEAP_packet_free (packet );
491
498
492
499
return (args );
493
500
default :
494
501
errno = EINVAL ;
502
+ SEAP_packet_free (packet );
495
503
return (NULL );
496
504
}
497
505
}
0 commit comments