diff --git a/hi/mkv.c b/hi/mkv.c index 12a5d6b..795e505 100644 --- a/hi/mkv.c +++ b/hi/mkv.c @@ -563,6 +563,7 @@ static int muxmkv_start(CHiPubNode *pubn) { this->fd = fopen(CHi_Crawl(&pubn->sinks[CUTIHI_MUXWEBM_IN_FILENAME])->data.text, "wb"); if(!this->fd) { + CHi_AddError(pubn, "invalid file", CUTIHI_MUXWEBM_IN_FILENAME); return 0; } diff --git a/hi/node.c b/hi/node.c index b3f9517..b1492f0 100644 --- a/hi/node.c +++ b/hi/node.c @@ -534,9 +534,7 @@ static int image_perform(CHiPubNode *node) { } if(node->sinks[CUTIHI_IMAGE_IN_FILE].type != CUTIHI_VAL_TEXT) { - node->errors.active[0] = true; - strncpy(node->errors.code[0], "invalid type", CUTIHI_ERR_SIZE); - node->errors.sink[0] = CUTIHI_IMAGE_IN_FILE; + CHi_AddError(node, "invalid type", 0); return 1; } @@ -549,9 +547,7 @@ static int image_perform(CHiPubNode *node) { if(!internal->cacheImg) { struct sail_image *simg; if(sail_load_from_file(fn, &simg) != SAIL_OK) { - node->errors.active[0] = true; - strncpy(node->errors.code[0], "invalid file", CUTIHI_ERR_SIZE); - node->errors.sink[0] = CUTIHI_IMAGE_IN_FILE; + CHi_AddError(node, "invalid file", 0); return 1; } @@ -574,6 +570,9 @@ static int image_perform(CHiPubNode *node) { } sail_destroy_image(cimg); + + free(internal->cachePath); + internal->cachePath = strdup(fn); } if(CHi_Node_Active(node)) { @@ -717,9 +716,7 @@ static int modulate_perform(CHiPubNode *node) { } if(imgsrc->type != CUTIHI_VAL_SAMPLE) { - node->errors.active[0] = true; - strncpy(node->errors.code[0], "invalid type", CUTIHI_ERR_SIZE); - node->errors.sink[0] = 0; + CHi_AddError(node, "invalid type", 0); return 1; } @@ -728,11 +725,15 @@ static int modulate_perform(CHiPubNode *node) { if(!CHi_Node_Active(node)) { node->sources->data.sample = NULL; - return; + return 1; } CHiImage *src = imgsrc->data.sample; + if(!src) { + return 1; + } + assert(src->stride % 16 == 0); CHiImage *dst = CHi_Image_New(2, 4, src->stride, src->width, src->height, NULL); diff --git a/hi/node.h b/hi/node.h index bcddf8c..0050b09 100644 --- a/hi/node.h +++ b/hi/node.h @@ -290,6 +290,9 @@ CUTIVIS CHiValue *CHi_Crawl(CHiValue*); CUTIVIS bool CHi_Node_Active(CHiPubNode*); CUTIVIS void CHi_Node_Destroy(CHiPubNode*); + +CUTIVIS void CHi_AddError(CHiPubNode*, const char *err, size_t sink); + #ifdef __cplusplus } #endif