ncvisual_from_plane: argument inversion error #678

This commit is contained in:
nick black 2020-06-05 02:31:36 -04:00
parent 5a1b1146d3
commit d73c12be6f
No known key found for this signature in database
GPG Key ID: 5F43400C21CBFACC
3 changed files with 6 additions and 4 deletions

View File

@ -1957,9 +1957,11 @@ uint32_t* ncplane_rgba(const ncplane* nc, int begy, int begx, int leny, int lenx
if(lenx < 0 || leny < 0){ // no need to draw zero-size object, exit if(lenx < 0 || leny < 0){ // no need to draw zero-size object, exit
return NULL; return NULL;
} }
//fprintf(stderr, "sum: %d/%d avail: %d/%d\n", begy + leny, begx + lenx, nc->leny, nc->lenx);
if(begx + lenx > nc->lenx || begy + leny > nc->leny){ if(begx + lenx > nc->lenx || begy + leny > nc->leny){
return NULL; return NULL;
} }
//fprintf(stderr, "ALLOCATING %zu\n", 4u * lenx * leny * 2);
uint32_t* ret = malloc(sizeof(*ret) * lenx * leny * 2); uint32_t* ret = malloc(sizeof(*ret) * lenx * leny * 2);
if(ret){ if(ret){
for(int y = begy, targy = 0 ; y < begy + leny ; ++y, targy += 2){ for(int y = begy, targy = 0 ; y < begy + leny ; ++y, targy += 2){

View File

@ -475,7 +475,8 @@ auto ncvisual_render(notcurses* nc, ncvisual* ncv,
auto ncvisual_from_plane(const ncplane* n, int begy, int begx, auto ncvisual_from_plane(const ncplane* n, int begy, int begx,
int leny, int lenx) -> ncvisual* { int leny, int lenx) -> ncvisual* {
uint32_t* rgba = ncplane_rgba(n, begx, begy, leny, lenx); uint32_t* rgba = ncplane_rgba(n, begy, begx, leny, lenx);
//fprintf(stderr, "snarg: %d/%d @ %d/%d (%p)\n", leny, lenx, begy, begx, rgba);
if(rgba == nullptr){ if(rgba == nullptr){
return nullptr; return nullptr;
} }

View File

@ -1,7 +1,6 @@
#include "main.h" #include "main.h"
#include <cmath> #include <cmath>
#include <vector> #include <vector>
#include <arpa/inet.h>
void RotateCW(struct notcurses* nc, struct ncplane* n) { void RotateCW(struct notcurses* nc, struct ncplane* n) {
CHECK(0 == notcurses_render(nc)); CHECK(0 == notcurses_render(nc));
@ -124,7 +123,7 @@ TEST_CASE("Rotate") {
REQUIRE(rgbaret); REQUIRE(rgbaret);
for(int i = 0 ; i < height * width / 2 ; ++i){ for(int i = 0 ; i < height * width / 2 ; ++i){
if(rgbaret[i] & CELL_BG_MASK){ if(rgbaret[i] & CELL_BG_MASK){
CHECK(rgbaret[i] == htonl(rgba[i])); CHECK(rgbaret[i] == rgba[i]);
} }
} }
free(rgbaret); free(rgbaret);
@ -175,7 +174,7 @@ TEST_CASE("Rotate") {
REQUIRE(rgbaret); REQUIRE(rgbaret);
for(int i = 0 ; i < height * width / 2 ; ++i){ for(int i = 0 ; i < height * width / 2 ; ++i){
if(rgbaret[i] & CELL_BG_MASK){ if(rgbaret[i] & CELL_BG_MASK){
CHECK(rgbaret[i] == htonl(rgba[i])); CHECK(rgbaret[i] == rgba[i]);
} }
} }
free(rgbaret); free(rgbaret);