Changeset - r8066:92e4ea58eb0f
[Not reviewed]
master
0 1 0
glx - 16 years ago 2007-12-13 02:04:09
glx@openttd.org
(svn r11627) -Fix [FS#1532] (r11145): poping from text reference stack must be done in a precise order. But some compiler (MSVC) over optimised it and inverted this order.
1 file changed with 15 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/newgrf_text.cpp
Show inline comments
 
@@ -505,13 +505,25 @@ struct TextRefStack {
 
	uint8  PopUnsignedByte()  { assert(this->position < lengthof(this->stack)); return this->stack[this->position++]; }
 
	int8   PopSignedByte()    { return (int8)this->PopUnsignedByte(); }
 

	
 
	uint16 PopUnsignedWord()  { return this->PopUnsignedByte()  | (((uint16)this->PopUnsignedByte())  <<  8); }
 
	uint16 PopUnsignedWord()
 
	{
 
		uint16 val = this->PopUnsignedByte();
 
		return val | (this->PopUnsignedByte() << 8);
 
	}
 
	int16  PopSignedWord()    { return (int32)this->PopUnsignedWord(); }
 

	
 
	uint32 PopUnsignedDWord() { return this->PopUnsignedWord()  | (((uint32)this->PopUnsignedWord())  << 16); }
 
	uint32 PopUnsignedDWord()
 
	{
 
		uint32 val = this->PopUnsignedWord();
 
		return val | (this->PopUnsignedWord() << 16);
 
	}
 
	int32  PopSignedDWord()   { return (int32)this->PopUnsignedDWord(); }
 

	
 
	uint64 PopUnsignedQWord() { return this->PopUnsignedDWord() | (((uint64)this->PopUnsignedDWord()) << 32); }
 
	uint64 PopUnsignedQWord()
 
	{
 
		uint64 val = this->PopUnsignedDWord();
 
		return val | (((uint64)this->PopUnsignedDWord()) << 32);
 
	}
 
	int64  PopSignedQWord()   { return (int64)this->PopUnsignedQWord(); }
 

	
 
	/** Rotate the top four words down: W1, W2, W3, W4 -> W4, W1, W2, W3 */
0 comments (0 inline, 0 general)