1
0
Fork 0

(svn r26113) -Fix: unhandled seek error, and leaking file descriptor

release/1.4
rubidium 2013-11-25 16:42:35 +00:00
parent ffb9279479
commit 43f76dcabb
1 changed files with 6 additions and 2 deletions

View File

@ -466,7 +466,10 @@ SQRESULT Squirrel::LoadFile(HSQUIRRELVM vm, const char *filename, SQBool printer
switch (us) { switch (us) {
case SQ_BYTECODE_STREAM_TAG: { // BYTECODE case SQ_BYTECODE_STREAM_TAG: { // BYTECODE
fseek(file, -2, SEEK_CUR); if (fseek(file, -2, SEEK_CUR) < 0) {
FioFCloseFile(file);
return sq_throwerror(vm, _SC("cannot seek the file"));
}
if (SQ_SUCCEEDED(sq_readclosure(vm, _io_file_read, &f))) { if (SQ_SUCCEEDED(sq_readclosure(vm, _io_file_read, &f))) {
FioFCloseFile(file); FioFCloseFile(file);
return SQ_OK; return SQ_OK;
@ -496,7 +499,8 @@ SQRESULT Squirrel::LoadFile(HSQUIRRELVM vm, const char *filename, SQBool printer
default: // ASCII default: // ASCII
func = _io_file_lexfeed_ASCII; func = _io_file_lexfeed_ASCII;
if (fseek(file, -2, SEEK_CUR) < 0) { if (fseek(file, -2, SEEK_CUR) < 0) {
return sq_throwerror(vm, _SC("cannot read the file")); FioFCloseFile(file);
return sq_throwerror(vm, _SC("cannot seek the file"));
} }
break; break;
} }