Handle max<min in LuaPseudoRandom::l_next()
authorPerttu Ahola <celeron55@gmail.com>
Fri, 27 Jul 2012 16:03:15 +0000 (19:03 +0300)
committerPerttu Ahola <celeron55@gmail.com>
Fri, 27 Jul 2012 16:03:15 +0000 (19:03 +0300)
src/scriptapi.cpp

index 61488abb4eb23b14ead3d841452a05dead171566..b8b3cb73aebcfa1bbee1b4935420f35baca9c5af 100644 (file)
@@ -3928,6 +3928,10 @@ private:
                        min = luaL_checkinteger(L, 2);
                if(!lua_isnil(L, 3))
                        max = luaL_checkinteger(L, 3);
+               if(max < min){
+                       errorstream<<"PseudoRandom.next(): max="<<max<<" min="<<min<<std::endl;
+                       throw LuaError(L, "PseudoRandom.next(): max < min");
+               }
                if(max - min != 32767 && max - min > 32767/5)
                        throw LuaError(L, "PseudoRandom.next() max-min is not 32767 and is > 32768/5. This is disallowed due to the bad random distribution the implementation would otherwise make.");
                PseudoRandom &pseudo = o->m_pseudo;