aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuiz Henrique de Figueiredo <lhf@tecgraf.puc-rio.br>1996-11-14 09:44:34 -0200
committerLuiz Henrique de Figueiredo <lhf@tecgraf.puc-rio.br>1996-11-14 09:44:34 -0200
commitd991def36c313a5d10bc9f6769fc3ec2307dd60b (patch)
tree66345b0c545604de1a7fb5f0225d7712be827ad1
parent8b195533d2b9576b339c8cf95c03bf13aec955a2 (diff)
downloadlua-d991def36c313a5d10bc9f6769fc3ec2307dd60b.tar.gz
lua-d991def36c313a5d10bc9f6769fc3ec2307dd60b.tar.bz2
lua-d991def36c313a5d10bc9f6769fc3ec2307dd60b.zip
added 3 new bytes to header (sizeof's)
-rw-r--r--undump.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/undump.c b/undump.c
index 1b22b9b1..b92f146d 100644
--- a/undump.c
+++ b/undump.c
@@ -3,7 +3,7 @@
3** load bytecodes from files 3** load bytecodes from files
4*/ 4*/
5 5
6char* rcs_undump="$Id: undump.c,v 1.15 1996/11/07 13:59:51 lhf Exp lhf $"; 6char* rcs_undump="$Id: undump.c,v 1.16 1996/11/07 14:13:28 lhf Exp lhf $";
7 7
8#include <stdio.h> 8#include <stdio.h>
9#include <string.h> 9#include <string.h>
@@ -90,7 +90,7 @@ static void FixCode(Byte* code, Byte* end) /* swap words */
90 p+=3; 90 p+=3;
91 break; 91 break;
92 case PUSHFUNCTION: 92 case PUSHFUNCTION:
93 p+=5; 93 p+=5; /* TODO: use sizeof(TFunc*) or old? */
94 break; 94 break;
95 case PUSHWORD: 95 case PUSHWORD:
96 case PUSHSELF: 96 case PUSHSELF:
@@ -111,7 +111,7 @@ static void FixCode(Byte* code, Byte* end) /* swap words */
111 p+=3; 111 p+=3;
112 break; 112 break;
113 } 113 }
114 case PUSHFLOAT: 114 case PUSHFLOAT: /* assumes sizeof(float)==4 */
115 { 115 {
116 Byte t; 116 Byte t;
117 t=p[1]; p[1]=p[4]; p[4]=t; 117 t=p[1]; p[1]=p[4]; p[4]=t;
@@ -250,8 +250,18 @@ static void LoadHeader(FILE* D) /* TODO: error handling */
250{ 250{
251 Word w,tw=TEST_WORD; 251 Word w,tw=TEST_WORD;
252 float f,tf=TEST_FLOAT; 252 float f,tf=TEST_FLOAT;
253 int version;
253 LoadSignature(D); 254 LoadSignature(D);
254 getc(D); /* skip version */ 255 version=getc(D);
256 if (version>23) /* after 2.5 */
257 {
258 int oldsizeofI=getc(D);
259 int oldsizeofF=getc(D);
260 int oldsizeofP=getc(D);
261 if (oldsizeofF!=4) lua_error("sizeof(float)!=4. not an IEEE machine?");
262 if (oldsizeofFP!=sizeof(TFunc*)) /* TODO: pack */
263 lua_error("different pointer sizes");
264 }
255 fread(&w,sizeof(w),1,D); /* test word */ 265 fread(&w,sizeof(w),1,D); /* test word */
256 if (w!=tw) 266 if (w!=tw)
257 { 267 {