diff --git a/hslua.cabal b/hslua.cabal
--- a/hslua.cabal
+++ b/hslua.cabal
@@ -1,5 +1,5 @@
 Name:                   hslua
-Version:                0.3.9
+Version:                0.3.10
 Stability:              beta
 Cabal-version:          >= 1.8
 License:                MIT
diff --git a/src/Scripting/Lua.hs b/src/Scripting/Lua.hs
--- a/src/Scripting/Lua.hs
+++ b/src/Scripting/Lua.hs
@@ -487,7 +487,10 @@
 
 -- | See @lua_tostring@ in Lua Reference Manual.
 tostring :: LuaState -> Int -> IO String
-tostring l n = c_lua_tolstring l (fromIntegral n) nullPtr >>= peekCString
+tostring l n = alloca $ \lenPtr -> do
+    cstr <- c_lua_tolstring l (fromIntegral n) lenPtr
+    len <- F.peek lenPtr
+    peekCStringLen (cstr, fromIntegral len)
 
 -- | See @lua_tothread@ in Lua Reference Manual.
 tothread :: LuaState -> Int -> IO LuaState
