Diff

util/datamanager.lua @ 117:8e5c5e6a3240

Fixed: datamanager.store and datamanager.load could crash when username or host arguments were nil. (useful for server specific and global data).
author Waqas Hussain <waqas20@gmail.com>
date Thu, 23 Oct 2008 02:49:43 +0500
parent 88:023320150c65
child 129:0f119bece309
line wrap: on
line diff
--- a/util/datamanager.lua	Thu Oct 23 02:19:26 2008 +0500
+++ b/util/datamanager.lua	Thu Oct 23 02:49:43 2008 +0500
@@ -68,16 +68,25 @@
 
 function load(username, host, datastore)
 	local data, ret = loadfile(getpath(username, host, datastore));
-	if not data then log("warn", "Failed to load "..datastore.." storage ('"..ret.."') for user: "..username.."@"..host); return nil; end
+	if not data then
+		log("warn", "Failed to load "..datastore.." storage ('"..ret.."') for user: "..(username or nil).."@"..(host or nil));
+		return nil;
+	end
 	setfenv(data, {});
 	local success, ret = pcall(data);
-	if not success then log("error", "Unable to load "..datastore.." storage ('"..ret.."') for user: "..username.."@"..host); return nil; end
+	if not success then
+		log("error", "Unable to load "..datastore.." storage ('"..ret.."') for user: "..(username or nil).."@"..(host or nil));
+		return nil;
+	end
 	return ret;
 end
 
 function store(username, host, datastore, data)
 	local f, msg = io_open(getpath(username, host, datastore), "w+");
-	if not f then log("error", "Unable to write to "..datastore.." storage ('"..msg.."') for user: "..username.."@"..host); return nil; end
+	if not f then
+		log("error", "Unable to write to "..datastore.." storage ('"..msg.."') for user: "..(username or nil).."@"..(host or nil));
+		return nil;
+	end
 	f:write("return ");
 	simplesave(f, data);
 	f:close();