if (c == LUA_SIGNATURE[0]) {
lua_pushliteral(L, "Bytecode prohibited when mod security is enabled.");
+ std::fclose(fp);
+ if (path) {
+ delete [] chunk_name;
+ }
return false;
}
size_t size = std::ftell(fp) - start;
char *code = new char[size];
ret = std::fseek(fp, start, SEEK_SET);
- CHECK_FILE_ERR(ret, fp);
+ if (ret) {
+ lua_pushfstring(L, "%s: %s", path, strerror(errno));
+ std::fclose(fp);
+ delete [] code;
+ if (path) {
+ delete [] chunk_name;
+ }
+ return false;
+ }
size_t num_read = std::fread(code, 1, size, fp);
if (path) {
}
if (num_read != size) {
lua_pushliteral(L, "Error reading file to load.");
+ delete [] code;
+ if (path) {
+ delete [] chunk_name;
+ }
return false;
}
if (!fp) return SRP_ERR;
- if (fread(g_rand_buff, sizeof(g_rand_buff), 1, fp) != 1) return SRP_ERR;
+ if (fread(g_rand_buff, sizeof(g_rand_buff), 1, fp) != 1) { fclose(fp); return SRP_ERR; }
if (fclose(fp)) return SRP_ERR;
#endif
return SRP_OK;