diff options
Diffstat (limited to 'engines')
| -rw-r--r-- | engines/kyra/screen.cpp | 22 | 
1 files changed, 6 insertions, 16 deletions
diff --git a/engines/kyra/screen.cpp b/engines/kyra/screen.cpp index fa1daa2b1a..b6383c82cc 100644 --- a/engines/kyra/screen.cpp +++ b/engines/kyra/screen.cpp @@ -1335,6 +1335,8 @@ void Screen::drawShape(uint8 pageNum, const uint8 *shapeData, int x, int y, int  	if ((flags & 0x2000) && _vm->game() != GI_KYRA1)  		_dsTable5 = va_arg(args, uint8 *); +	va_end(args); +  	static const DsMarginSkipFunc dsMarginFunc[] = {  		&Screen::drawShapeMarginNoScaleUpwind,  		&Screen::drawShapeMarginNoScaleDownwind, @@ -1420,7 +1422,6 @@ void Screen::drawShape(uint8 pageNum, const uint8 *shapeData, int x, int y, int  			warning("Missing drawShape plotting method type %d", ppc);  		if (dsPlot3 != dsPlot2 && !dsPlot3)  			warning("Missing drawShape plotting method type %d", (((flags >> 8) & 0xF7) & 0x3F)); -		va_end(args);  		return;  	} @@ -1453,10 +1454,8 @@ void Screen::drawShape(uint8 pageNum, const uint8 *shapeData, int x, int y, int  		shapeHeight = (shapeHeight * _dsScaleH) >> 8;  		shpWidthScaled1 = shpWidthScaled2 = (shapeWidth * _dsScaleW) >> 8; -		if (!shapeHeight || !shpWidthScaled1) { -			va_end(args); +		if (!shapeHeight || !shpWidthScaled1)  			return; -		}  	}  	if (flags & DSF_CENTER) { @@ -1486,7 +1485,6 @@ void Screen::drawShape(uint8 pageNum, const uint8 *shapeData, int x, int y, int  	if (t < 0) {  		shapeHeight += t;  		if (shapeHeight <= 0) { -			va_end(args);  			return;  		} @@ -1520,10 +1518,8 @@ void Screen::drawShape(uint8 pageNum, const uint8 *shapeData, int x, int y, int  	}  	t = (flags & 2) ? y + shapeHeight - y1 : y2 - y; -	if (t <= 0) { -		va_end(args); +	if (t <= 0)  		return; -	}  	if (t < shapeHeight) {  		shapeHeight = t; @@ -1535,20 +1531,16 @@ void Screen::drawShape(uint8 pageNum, const uint8 *shapeData, int x, int y, int  	if (x < 0) {  		shpWidthScaled1 += x;  		_dsOffscreenLeft = -x; -		if (_dsOffscreenLeft >= shpWidthScaled2) { -			va_end(args); +		if (_dsOffscreenLeft >= shpWidthScaled2)  			return; -		}  		x = 0;  	}  	_dsOffscreenRight = 0;  	t = x2 - x; -	if (t <= 0) { -		va_end(args); +	if (t <= 0)  		return; -	}  	if (t < shpWidthScaled1) {  		shpWidthScaled1 = t; @@ -1628,8 +1620,6 @@ void Screen::drawShape(uint8 pageNum, const uint8 *shapeData, int x, int y, int  			scaleCounterV -= 0x100;  		} while (scaleCounterV & 0xFF00);  	} - -	va_end(args);  }  int Screen::drawShapeMarginNoScaleUpwind(uint8 *&dst, const uint8 *&src, int &cnt) {  | 
