@@ -53,20 +53,21 @@ static void exec_later(void *data) {
53
53
static void process_events (fsw_cevent const * const events , const unsigned int event_num , void * data ) {
54
54
55
55
SEXP callback = (SEXP ) data ;
56
+ watcher_cb * wcb = NULL ;
56
57
57
58
if (callback != R_NilValue ) {
58
59
59
- watcher_cb * wcb = calloc ( 1 , sizeof (watcher_cb ));
60
- if (! wcb ) return ;
60
+ wcb = malloc ( sizeof (watcher_cb ));
61
+ if (wcb == NULL ) goto fail ;
61
62
62
63
wcb -> event_num = event_num ;
63
- wcb -> paths = calloc (event_num , sizeof (char * ));
64
- if (!wcb -> paths ) { watcher_unwind (wcb ); return ; }
65
64
wcb -> callback = callback ;
65
+ wcb -> paths = calloc (event_num , sizeof (char * ));
66
+ if (wcb -> paths == NULL ) goto fail ;
66
67
for (unsigned int i = 0 ; i < event_num ; i ++ ) {
67
68
size_t slen = strlen (events [i ].path ) + 1 ;
68
69
wcb -> paths [i ] = malloc (sizeof (char ) * slen );
69
- if (! wcb -> paths [i ]) { watcher_unwind ( wcb ); return ; }
70
+ if (wcb -> paths [i ] == NULL ) goto fail ;
70
71
memcpy (wcb -> paths [i ], events [i ].path , slen );
71
72
}
72
73
eln2 (exec_later , wcb , 0 , 0 );
@@ -79,6 +80,11 @@ static void process_events(fsw_cevent const *const events, const unsigned int ev
79
80
80
81
}
81
82
83
+ return ;
84
+
85
+ fail :
86
+ watcher_unwind (wcb );
87
+
82
88
}
83
89
84
90
static void * watcher_thread (void * args ) {
0 commit comments