File e3-2.6.0-gcc4.patch of Package e3
diff -ur e3-2.6-4/e3c/e3.c e3-2.6/e3c/e3.c
--- e3-2.6-4/e3c/e3.c 2002-04-27 17:43:29.000000000 +0200
+++ e3-2.6/e3c/e3.c 2005-04-28 17:43:25.209034054 +0200
@@ -224,7 +224,7 @@
#define RETURN goto *(*esp--)
#define CALL(calladr,retadr) *++esp=(long)&&_loc##retadr; goto calladr; _loc##retadr:
#define PUSH(arg) *++esp=arg
-#define POP(arg) (long*)arg=*esp--
+#define POP(arg) arg=(long)(*esp--)
int main(int argc,char**argv,char **envp)
{
@@ -904,7 +904,7 @@
CALL(sys_writeKP,93); // restore old cursor pos
NoWrite:POP(edi);
POP(esi);
- POP(ebp);
+ ebp=(long *)*(esp--);
POP(ebx);
POP(edx);
POP(ecx);
@@ -1296,7 +1296,7 @@
Ins0: POP(edi); // here is the jmp destination from DeleteByte
//------
changed = CHANGED;
- (long)ebp+=eax;
+ ebp+=eax;
if ((unsigned long)edi>=(unsigned long)blockende) goto Ins1;
blockende+=eax;
Ins1: if ((unsigned long)edi>=(unsigned long)blockbegin) goto Ins2;
@@ -1546,7 +1546,7 @@
RSno_lineNr:CALL(StatusLineShow,156); // now write all at once
POP(edi);
POP(esi);
- POP(ebp);
+ ebp=(long *)*(esp--);
POP(ebx);
POP(edx);
POP(ecx);
@@ -1576,7 +1576,7 @@
CALL(StatusLineShow,158);
POP(edi);
POP(esi);
- POP(ebp);
+ ebp=(long *)*(esp--);
POP(ebx);
POP(edx);
POP(ecx);