|
|
eca1ab0 |
diff -ur abuse_sdl-0.7.0.orig/src/include/stack.hpp abuse_sdl-0.7.0/src/include/stack.hpp
|
|
|
eca1ab0 |
--- abuse_sdl-0.7.0.orig/src/include/stack.hpp 2002-12-15 06:00:32.000000000 +0100
|
|
|
eca1ab0 |
+++ abuse_sdl-0.7.0/src/include/stack.hpp 2006-08-16 16:54:58.000000000 +0200
|
|
|
eca1ab0 |
@@ -13,20 +13,38 @@
|
|
|
eca1ab0 |
{
|
|
|
eca1ab0 |
public :
|
|
|
eca1ab0 |
T **sdata;
|
|
|
eca1ab0 |
- long son;
|
|
|
eca1ab0 |
-
|
|
|
eca1ab0 |
- grow_stack(int max_size) { sdata=(T **)jmalloc(max_size,"pointer stack"); son=0; }
|
|
|
eca1ab0 |
+ unsigned int son, _max_size;
|
|
|
eca1ab0 |
+ /* <sigh> the max_size parameter is the number of bytes of the pointerstack
|
|
|
eca1ab0 |
+ instead of the number of entries which it ofcourse should have been.
|
|
|
eca1ab0 |
+ This breaks on 64 bit since the caller assumes 4 bytes per pointer and
|
|
|
eca1ab0 |
+ thus on 64 bit allocates not enough memory. Instead of fixing all callers
|
|
|
eca1ab0 |
+ we work around this by multiplying maxsize by 2 on 64 bit. */
|
|
|
eca1ab0 |
+ grow_stack(unsigned int max_size)
|
|
|
eca1ab0 |
+ {
|
|
|
eca1ab0 |
+ max_size *= sizeof(void*)/sizeof(int);
|
|
|
eca1ab0 |
+ sdata = (T **)jmalloc(max_size, "pointer stack");
|
|
|
eca1ab0 |
+ son=0;
|
|
|
eca1ab0 |
+ _max_size=max_size;
|
|
|
eca1ab0 |
+ }
|
|
|
eca1ab0 |
+
|
|
|
eca1ab0 |
void push(T *data)
|
|
|
eca1ab0 |
{
|
|
|
eca1ab0 |
sdata[son]=data;
|
|
|
eca1ab0 |
son++;
|
|
|
eca1ab0 |
+ if (son >= (_max_size/sizeof(int)))
|
|
|
eca1ab0 |
+ {
|
|
|
eca1ab0 |
+ lbreak("stack overflow\n");
|
|
|
eca1ab0 |
+ exit(0);
|
|
|
eca1ab0 |
+ }
|
|
|
eca1ab0 |
}
|
|
|
eca1ab0 |
|
|
|
eca1ab0 |
- T *pop(long total)
|
|
|
eca1ab0 |
- { if (total>son) { lbreak("stack underflow\n"); exit(0); }
|
|
|
eca1ab0 |
+ T *pop(unsigned int total)
|
|
|
eca1ab0 |
+ {
|
|
|
eca1ab0 |
+ if (total>son) { lbreak("stack underflow\n"); exit(0); }
|
|
|
eca1ab0 |
son-=total;
|
|
|
eca1ab0 |
return sdata[son];
|
|
|
eca1ab0 |
}
|
|
|
eca1ab0 |
+
|
|
|
eca1ab0 |
void clean_up()
|
|
|
eca1ab0 |
{
|
|
|
eca1ab0 |
if (son!=0) fprintf(stderr,"Warning cleaning up stack and not empty\n");
|
|
|
eca1ab0 |
diff -ur abuse_sdl-0.7.0.orig/src/light.cpp abuse_sdl-0.7.0/src/light.cpp
|
|
|
eca1ab0 |
--- abuse_sdl-0.7.0.orig/src/light.cpp 2006-08-16 16:56:33.000000000 +0200
|
|
|
eca1ab0 |
+++ abuse_sdl-0.7.0/src/light.cpp 2006-08-16 16:36:07.000000000 +0200
|
|
|
eca1ab0 |
@@ -348,7 +348,7 @@
|
|
|
eca1ab0 |
// f->write(green_light,256*64);
|
|
|
eca1ab0 |
for (int i=0;i
|
|
|
eca1ab0 |
f->write(tints[i],256);
|
|
|
eca1ab0 |
- fp->write(bright_tint,256);
|
|
|
eca1ab0 |
+ f->write(bright_tint,256);
|
|
|
eca1ab0 |
// f.write(trans_table,256*256);
|
|
|
eca1ab0 |
}
|
|
|
eca1ab0 |
delete f;
|