# HG changeset patch # User Waqas Hussain # Date 1224712183 -18000 # Node ID 8e5c5e6a32406dc2c5f408a2c3ac7a79cbcdb00d # Parent 72e698cdabd78337618ecd04d97df3d44c7daad5 Fixed: datamanager.store and datamanager.load could crash when username or host arguments were nil. (useful for server specific and global data). diff -r 72e698cdabd7 -r 8e5c5e6a3240 util/datamanager.lua --- 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();