diff --git a/src/core/org/luaj/vm/LuaState.java b/src/core/org/luaj/vm/LuaState.java
index cf638be9..9cc6bd11 100644
--- a/src/core/org/luaj/vm/LuaState.java
+++ b/src/core/org/luaj/vm/LuaState.java
@@ -22,6 +22,7 @@
package org.luaj.vm;
import java.io.ByteArrayOutputStream;
+import java.io.IOException;
import java.io.InputStream;
import java.util.Stack;
@@ -1752,10 +1753,16 @@ public class LuaState extends Lua {
* is 0.
*/
public int objlen(int index) {
- return tostring(index).length();
+ LValue p = topointer( index );
+ switch ( p.luaGetType() ) {
+ case LUA_TTABLE:
+ case LUA_TSTRING:
+ return p.luaLength();
+ default:
+ return 0;
+ }
}
-
/**
* Pops n elements from the stack. [-n,
* +0, -]