diff -urN vbestate-0.1/vbestate.c vbestate-0.1-s3/vbestate.c --- vbestate-0.1/vbestate.c 2004-12-09 00:42:51.000000000 +0100 +++ vbestate-0.1-s3/vbestate.c 2004-12-21 01:37:06.132044112 +0100 @@ -119,6 +119,9 @@ short tmpbuffer[524288]; size_t i,length=0; + /* The loop below doesn't make any sense unless we think our + input data contains length/sizeof(tmpbuffer)*sizeof(tmpbuffer) + bytes of leading garbage */ while (i=read(0, tmpbuffer, sizeof(tmpbuffer))) { length+=i; } @@ -127,6 +130,12 @@ memcpy(data,tmpbuffer,length); restore_state(data); + text_mode(); + + data = LRMI_alloc_real(length); + memcpy(data,tmpbuffer,length); + + restore_state(data); } else { fprintf(stderr,"%s: Usage %s [save|restore]\n", argv[0],argv[0]);