diff -r fc40b343c45c -r fc032c0f7b23 hedgewars/uScript.pas --- a/hedgewars/uScript.pas Fri Nov 16 00:46:33 2012 +0400 +++ b/hedgewars/uScript.pas Sat Nov 17 00:01:06 2012 +0400 @@ -1967,31 +1967,16 @@ end; // custom script loader via physfs, passed to lua_load -const BUFSIZE = 16; -var phyfsReaderBuffer: pointer; - -function physfsReader(L: Plua_State; f: PFSFile; sz: Psize_t) : PChar; cdecl; -var fileSize: Longword; -begin -writeln(stdout, '==== reading'); - if pfsEOF(f) then - physfsReader:= nil - else - begin - sz^:= pfsBlockRead(f, phyfsReaderBuffer, BUFSIZE); -writeln(stdout, '==== read ' + inttostr(sz^)); - if sz^ = 0 then - physfsReader:= nil - else - physfsReader:= phyfsReaderBuffer - end -end; +const BUFSIZE = 1024; +var physfsReaderBuffer: pointer; external; +function physfsReader(L: Plua_State; f: PFSFile; sz: Psize_t) : PChar; cdecl; external; procedure ScriptLoad(name : shortstring); var ret : LongInt; s : shortstring; f : PFSFile; + buf : array[0..Pred(BUFSIZE)] of byte; begin s:= cPathz[ptData] + name; if not pfsExists(s) then @@ -2001,9 +1986,8 @@ if f = nil then exit; -GetMem(phyfsReaderBuffer, BUFSIZE); +physfsReaderBuffer:= @buf; ret:= lua_load(luaState, @physfsReader, f, Str2PChar(s)); -FreeMem(phyfsReaderBuffer, BUFSIZE); pfsClose(f); if ret <> 0 then