--- a/objwriter.cxx Sun Aug 12 04:45:27 2012 +0300 +++ b/objwriter.cxx Mon Aug 13 19:04:29 2012 +0300 @@ -55,6 +55,7 @@ MainBuffer = new DataBuffer; MainLoopBuffer = new DataBuffer; OnEnterBuffer = new DataBuffer; + RecordBuffer = NULL; // created on demand numWrittenBytes = 0; numWrittenReferences = 0; filepath = path; @@ -109,8 +110,6 @@ for (unsigned int a = 0; a < stringcount; a++) WriteString (g_StringTable[a]); } - - printf ("%u / %u string%s written\n", stringcount, MAX_LIST_STRINGS, PLURAL (stringcount)); } // Write main buffer to file @@ -118,9 +117,6 @@ fp = fopen (filepath, "w"); CHECK_FILE (fp, filepath, "writing"); - if (sizeof (unsigned char) != 1) - error ("size of unsigned char isn't 1, but %d!\n", sizeof (unsigned char)); - // First, resolve references numWrittenReferences = 0; for (unsigned int u = 0; u < MAX_MARKS; u++) { @@ -134,6 +130,10 @@ memset (MainBuffer->buffer + ref->pos + v, uni.b[v], 1); } + /* + printf ("reference %u at %d resolved to %u at %d\n", + u, ref->pos, ref->num, MainBuffer->marks[ref->num]->pos); + */ numWrittenReferences++; } @@ -146,7 +146,8 @@ } DataBuffer* ObjWriter::GetCurrentBuffer() { - return (g_CurMode == MODE_MAINLOOP) ? MainLoopBuffer : + return RecordBuffer ? RecordBuffer : + (g_CurMode == MODE_MAINLOOP) ? MainLoopBuffer : (g_CurMode == MODE_ONENTER) ? OnEnterBuffer : MainBuffer; }