diff --git a/src/lib/visual.c b/src/lib/visual.c index 7e5bbff6d..eef5d4f20 100644 --- a/src/lib/visual.c +++ b/src/lib/visual.c @@ -558,14 +558,17 @@ ncplane* ncvisual_render(notcurses* nc, ncvisual* ncv, const struct ncvisual_opt int begx = vopts ? vopts->begx : 0; //fprintf(stderr, "blit %dx%d+%dx%d %p\n", begy, begx, leny, lenx, ncv->data); if(begy < 0 || begx < 0 || lenx < -1 || leny < -1){ + logerror(nc, "Invalid geometry for visual %d %d %d %d\n", begy, begx, leny, lenx); return NULL; } //fprintf(stderr, "OUR DATA: %p rows/cols: %d/%d\n", ncv->data, ncv->rows, ncv->cols); if(ncv->data == NULL){ + logerror(nc, "No data in visual\n"); return NULL; } //fprintf(stderr, "blit %d/%d to %dx%d+%dx%d scaling: %d\n", ncv->rows, ncv->cols, begy, begx, leny, lenx, vopts ? vopts->scaling : 0); if(begx >= ncv->cols || begy >= ncv->rows){ + logerror(nc, "Visual too large %d > %d or %d > %d\n", begy, ncv->rows, begx, ncv->cols); return NULL; } if(lenx == 0){ // 0 means "to the end"; use all available source material @@ -576,13 +579,16 @@ ncplane* ncvisual_render(notcurses* nc, ncvisual* ncv, const struct ncvisual_opt } //fprintf(stderr, "blit %d/%d to %dx%d+%dx%d scaling: %d\n", ncv->rows, ncv->cols, begy, begx, leny, lenx, vopts ? vopts->scaling : 0); if(lenx <= 0 || leny <= 0){ // no need to draw zero-size object, exit + logerror(nc, "Zero-size object %d %d\n", leny, lenx); return NULL; } if(begx + lenx > ncv->cols || begy + leny > ncv->rows){ + logerror(nc, "Geometry too large %d > %d or %d > %d\n", begy + leny, ncv->rows, begx + lenx, ncv->cols); return NULL; } const struct blitset* bset = rgba_blitter(nc, vopts); if(!bset){ + logerror(nc, "Couldn't get a blitter for %d\n", vopts ? vopts->blitter : NCBLIT_DEFAULT); return NULL; } //fprintf(stderr, "beg/len: %d %d %d %d scale: %d/%d\n", begy, leny, begx, lenx, encoding_y_scale(bset), encoding_x_scale(bset));