C-Stack test does not assume minimum of 400 slots
diff --git a/testes/cstack.lua b/testes/cstack.lua
index cd74fd2..e3e14f7 100644
--- a/testes/cstack.lua
+++ b/testes/cstack.lua
@@ -20,13 +20,14 @@
 
 
 -- get and print original limit
-local origlimit = debug.setcstacklimit(400)
+local origlimit <const> = debug.setcstacklimit(400)
 print("default stack limit: " .. origlimit)
 
+
 -- Do the tests using the original limit. Or else you may want to change
 -- 'currentlimit' to lower values to avoid a seg. fault or to higher
 -- values to check whether they are reliable.
-local currentlimit = origlimit
+local currentlimit <const> =  origlimit
 debug.setcstacklimit(currentlimit)
 print("current stack limit: " .. currentlimit)
 
@@ -107,12 +108,16 @@
 
 do  print("testing changes in C-stack limit")
 
+  -- Just an alternative limit, different from the current one
+  -- (smaller to avoid stack overflows)
+  local alterlimit <const> = currentlimit * 8 // 10
+
   assert(not debug.setcstacklimit(0))        -- limit too small
   assert(not debug.setcstacklimit(50000))    -- limit too large
   local co = coroutine.wrap (function ()
-               return debug.setcstacklimit(400)
+               return debug.setcstacklimit(alterlimit)
              end)
-  assert(co() == false)         -- cannot change C stack inside coroutine
+  assert(not co())         -- cannot change C stack inside coroutine
 
   local n
   local function foo () n = n + 1; foo () end
@@ -123,28 +128,32 @@
     return n
   end
 
-  -- set limit to 400
-  assert(debug.setcstacklimit(400) == currentlimit)
-  local lim400 = check()
+  -- set limit to 'alterlimit'
+  assert(debug.setcstacklimit(alterlimit) == currentlimit)
+  local limalter <const> = check()
   -- set a very low limit (given that there are already several active
   -- calls to arrive here)
-  local lowlimit = 38
-  assert(debug.setcstacklimit(lowlimit) == 400)
-  assert(check() < lowlimit - 30)
-  assert(debug.setcstacklimit(600) == lowlimit)
-  local lim600 = check()
-  assert(lim600 == lim400 + 200)
+  local lowlimit <const> = 38
+  assert(debug.setcstacklimit(lowlimit) == alterlimit)
+  -- usable limit is much lower, due to active calls
+  local actuallow = check()
+  assert(actuallow < lowlimit - 30)
+  -- now, add 'lowlimit' extra slots, which should all be available
+  assert(debug.setcstacklimit(lowlimit + lowlimit) == lowlimit)
+  local lim2 <const> = check()
+  assert(lim2 == actuallow + lowlimit)
 
 
   -- 'setcstacklimit' works inside protected calls. (The new stack
   -- limit is kept when 'pcall' returns.)
   assert(pcall(function ()
-    assert(debug.setcstacklimit(400) == 600)
-    assert(check() <= lim400)
+    assert(debug.setcstacklimit(alterlimit) == lowlimit * 2)
+    assert(check() <= limalter)
   end))
 
-  assert(check() == lim400)
-  assert(debug.setcstacklimit(origlimit) == 400)   -- restore original limit
+  assert(check() == limalter)
+  -- restore original limit
+  assert(debug.setcstacklimit(origlimit) == alterlimit)
 end