mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-28 07:51:19 +02:00
fix possible segfault and negative height
This commit is contained in:
@@ -62,6 +62,9 @@ uint8_t CColorGradient::limitChar(int c)
|
|||||||
|
|
||||||
fb_pixel_t* CColorGradient::gradientColorToTransparent(fb_pixel_t col, fb_pixel_t *gradientBuf, int bSize, int /*mode*/, int /*intensity*/)
|
fb_pixel_t* CColorGradient::gradientColorToTransparent(fb_pixel_t col, fb_pixel_t *gradientBuf, int bSize, int /*mode*/, int /*intensity*/)
|
||||||
{
|
{
|
||||||
|
if (bSize < 1)
|
||||||
|
return gradientBuf;
|
||||||
|
|
||||||
if (gradientBuf == NULL) {
|
if (gradientBuf == NULL) {
|
||||||
gradientBuf = (fb_pixel_t*) malloc(bSize * sizeof(fb_pixel_t));
|
gradientBuf = (fb_pixel_t*) malloc(bSize * sizeof(fb_pixel_t));
|
||||||
if (gradientBuf == NULL) {
|
if (gradientBuf == NULL) {
|
||||||
@@ -94,6 +97,8 @@ fb_pixel_t* CColorGradient::gradientColorToTransparent(fb_pixel_t col, fb_pixel_
|
|||||||
|
|
||||||
fb_pixel_t* CColorGradient::gradientOneColor(fb_pixel_t col, fb_pixel_t *gradientBuf, int bSize, int mode, int intensity, uint8_t v_min, uint8_t v_max, uint8_t s)
|
fb_pixel_t* CColorGradient::gradientOneColor(fb_pixel_t col, fb_pixel_t *gradientBuf, int bSize, int mode, int intensity, uint8_t v_min, uint8_t v_max, uint8_t s)
|
||||||
{
|
{
|
||||||
|
if (bSize < 1)
|
||||||
|
return gradientBuf;
|
||||||
|
|
||||||
if (gradientBuf == NULL) {
|
if (gradientBuf == NULL) {
|
||||||
gradientBuf = (fb_pixel_t*) malloc(bSize * sizeof(fb_pixel_t));
|
gradientBuf = (fb_pixel_t*) malloc(bSize * sizeof(fb_pixel_t));
|
||||||
|
@@ -676,7 +676,7 @@ fb_pixel_t* CFrameBuffer::paintBoxRel2Buf(const int dx, const int dy, const int
|
|||||||
{
|
{
|
||||||
if (!getActive())
|
if (!getActive())
|
||||||
return buf;
|
return buf;
|
||||||
if (dx == 0 || dy == 0) {
|
if (dx < 1 || dy < 1) {
|
||||||
dprintf(DEBUG_INFO, "[CFrameBuffer] [%s - %d]: radius %d, dx %d dy %d\n", __func__, __LINE__, radius, dx, dy);
|
dprintf(DEBUG_INFO, "[CFrameBuffer] [%s - %d]: radius %d, dx %d dy %d\n", __func__, __LINE__, radius, dx, dy);
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
@@ -2026,6 +2026,9 @@ void CFrameBuffer::blit2FB(void *fbbuff, uint32_t width, uint32_t height, uint32
|
|||||||
|
|
||||||
void CFrameBuffer::blitBox2FB(const fb_pixel_t* boxBuf, uint32_t width, uint32_t height, uint32_t xoff, uint32_t yoff)
|
void CFrameBuffer::blitBox2FB(const fb_pixel_t* boxBuf, uint32_t width, uint32_t height, uint32_t xoff, uint32_t yoff)
|
||||||
{
|
{
|
||||||
|
if(width <1 || height <1 || !boxBuf )
|
||||||
|
return;
|
||||||
|
|
||||||
uint32_t xc = (width > xRes) ? (uint32_t)xRes : width;
|
uint32_t xc = (width > xRes) ? (uint32_t)xRes : width;
|
||||||
uint32_t yc = (height > yRes) ? (uint32_t)yRes : height;
|
uint32_t yc = (height > yRes) ? (uint32_t)yRes : height;
|
||||||
|
|
||||||
|
@@ -136,6 +136,8 @@ void CComponentsScrollBar::initSegments()
|
|||||||
|
|
||||||
//calculate height of segment container
|
//calculate height of segment container
|
||||||
int h_seg_obj = height - 2*sb_up_obj->getHeight() - 3*append_y_offset;
|
int h_seg_obj = height - 2*sb_up_obj->getHeight() - 3*append_y_offset;
|
||||||
|
if(h_seg_obj < 0)
|
||||||
|
h_seg_obj = 0;
|
||||||
|
|
||||||
//init segment container
|
//init segment container
|
||||||
if (sb_segments_obj == NULL){
|
if (sb_segments_obj == NULL){
|
||||||
@@ -154,6 +156,8 @@ void CComponentsScrollBar::initSegments()
|
|||||||
//set y position of 1st segment and set height of segments
|
//set y position of 1st segment and set height of segments
|
||||||
int y_seg = 1+ append_y_offset;
|
int y_seg = 1+ append_y_offset;
|
||||||
int h_seg = sb_segments_obj->getHeight()/sb_segments_count - append_y_offset;
|
int h_seg = sb_segments_obj->getHeight()/sb_segments_count - append_y_offset;
|
||||||
|
if(h_seg < 0)
|
||||||
|
h_seg = 0;
|
||||||
|
|
||||||
//create and add segments to segment container
|
//create and add segments to segment container
|
||||||
for(u_int8_t i=0; i<sb_segments_count; i++){
|
for(u_int8_t i=0; i<sb_segments_count; i++){
|
||||||
|
@@ -445,6 +445,9 @@ void CInfoViewer::paintHead()
|
|||||||
void CInfoViewer::paintBody()
|
void CInfoViewer::paintBody()
|
||||||
{
|
{
|
||||||
int h_body = InfoHeightY - header_height - OFFSET_SHADOW;
|
int h_body = InfoHeightY - header_height - OFFSET_SHADOW;
|
||||||
|
if(h_body < 0)
|
||||||
|
h_body = 0;
|
||||||
|
|
||||||
infoViewerBB->initBBOffset();
|
infoViewerBB->initBBOffset();
|
||||||
if (!zap_mode)
|
if (!zap_mode)
|
||||||
h_body += infoViewerBB->bottom_bar_offset;
|
h_body += infoViewerBB->bottom_bar_offset;
|
||||||
|
Reference in New Issue
Block a user