diff --git a/ldblib.c b/ldblib.c
index 9f7aad5..a9a84c5 100644
--- a/ldblib.c
+++ b/ldblib.c
@@ -437,9 +437,9 @@
 }
 
 
-static int db_setCstacklimit (lua_State *L) {
+static int db_setcstacklimit (lua_State *L) {
   int limit = (int)luaL_checkinteger(L, 1);
-  int res = lua_setCstacklimit(L, limit);
+  int res = lua_setcstacklimit(L, limit);
   if (res == 0)
     lua_pushboolean(L, 0);
   else
@@ -465,7 +465,7 @@
   {"setmetatable", db_setmetatable},
   {"setupvalue", db_setupvalue},
   {"traceback", db_traceback},
-  {"setCstacklimit", db_setCstacklimit},
+  {"setcstacklimit", db_setcstacklimit},
   {NULL, NULL}
 };
 
diff --git a/lstate.c b/lstate.c
index 86cd5fb..1c33dcf 100644
--- a/lstate.c
+++ b/lstate.c
@@ -96,7 +96,7 @@
 }
 
 
-LUA_API int lua_setCstacklimit (lua_State *L, unsigned int limit) {
+LUA_API int lua_setcstacklimit (lua_State *L, unsigned int limit) {
   global_State *g = G(L);
   int ccalls;
   luaE_freeCI(L);  /* release unused CIs */
diff --git a/lua.h b/lua.h
index d3575fd..bd2631e 100644
--- a/lua.h
+++ b/lua.h
@@ -462,7 +462,7 @@
 LUA_API int (lua_gethookmask) (lua_State *L);
 LUA_API int (lua_gethookcount) (lua_State *L);
 
-LUA_API int (lua_setCstacklimit) (lua_State *L, unsigned int limit);
+LUA_API int (lua_setcstacklimit) (lua_State *L, unsigned int limit);
 
 struct lua_Debug {
   int event;
diff --git a/manual/manual.of b/manual/manual.of
index 292d1e5..cca4ca0 100644
--- a/manual/manual.of
+++ b/manual/manual.of
@@ -4814,7 +4814,7 @@
 
 }
 
-@APIEntry{int (lua_setCstacklimit) (lua_State *L, unsigned int limit);|
+@APIEntry{int (lua_setcstacklimit) (lua_State *L, unsigned int limit);|
 @apii{0,0,-}
 
 Sets a new limit for the C stack.
@@ -4823,7 +4823,7 @@
 Returns the old limit in case of success,
 or zero in case of error.
 For more details about this function,
-see @Lid{debug.setCstacklimit},
+see @Lid{debug.setcstacklimit},
 its equivalent in the standard library.
 
 }
@@ -8565,7 +8565,7 @@
 
 }
 
-@LibEntry{debug.setCstacklimit (limit)|
+@LibEntry{debug.setcstacklimit (limit)|
 
 Sets a new limit for the C stack.
 This limit controls how deeply nested calls can go in Lua,
@@ -8586,10 +8586,10 @@
 @item{@id{limit} must be less than 40000;}
 @item{@id{limit} cannot be less than the amount of C stack in use.}
 }
-In case of success,
-this function returns the old limit.
-In case of error,
+If a call does not respect some restriction,
 it returns @false.
+Otherwise,
+the call returns the old limit.
 
 }
 
diff --git a/testes/cstack.lua b/testes/cstack.lua
index 2a55ce2..486abc1 100644
--- a/testes/cstack.lua
+++ b/testes/cstack.lua
@@ -8,7 +8,7 @@
 
 -- Segmentation faults in these tests probably result from a C-stack
 -- overflow. To avoid these errors, you can use the function
--- 'debug.setCstacklimit' to set a smaller limit for the use of
+-- 'debug.setcstacklimit' to set a smaller limit for the use of
 -- C stack by Lua. After finding a reliable limit, you might want
 -- to recompile Lua with this limit as the value for
 -- the constant 'LUAI_MAXCCALLS', which defines the default limit.
@@ -19,12 +19,12 @@
 -- higher than 2_000.
 
 
-local origlimit = debug.setCstacklimit(400)
+local origlimit = debug.setcstacklimit(400)
 print("default stack limit: " .. origlimit)
 
 -- change this value for different limits for this test suite
 local currentlimit = origlimit
-debug.setCstacklimit(currentlimit)
+debug.setcstacklimit(currentlimit)
 print("current stack limit: " .. currentlimit)
 
 
@@ -102,10 +102,10 @@
 
 do  print("testing changes in C-stack limit")
 
-  assert(not debug.setCstacklimit(0))        -- limit too small
-  assert(not debug.setCstacklimit(50000))    -- limit too large
+  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(400)
              end)
   assert(co() == false)         -- cannot change C stack inside coroutine
 
@@ -118,26 +118,26 @@
     return n
   end
 
-  assert(debug.setCstacklimit(400) == currentlimit)
+  assert(debug.setcstacklimit(400) == currentlimit)
   local lim400 = check()
   -- a very low limit (given that the several calls to arive here)
   local lowlimit = 38
-  assert(debug.setCstacklimit(lowlimit) == 400)
+  assert(debug.setcstacklimit(lowlimit) == 400)
   assert(check() < lowlimit - 30)
-  assert(debug.setCstacklimit(600) == lowlimit)
+  assert(debug.setcstacklimit(600) == lowlimit)
   local lim600 = check()
   assert(lim600 == lim400 + 200)
 
 
-  -- 'setCstacklimit' works inside protected calls. (The new stack
+  -- 'setcstacklimit' works inside protected calls. (The new stack
   -- limit is kept when 'pcall' returns.)
   assert(pcall(function ()
-    assert(debug.setCstacklimit(400) == 600)
+    assert(debug.setcstacklimit(400) == 600)
     assert(check() <= lim400)
   end))
 
   assert(check() == lim400)
-  assert(debug.setCstacklimit(origlimit) == 400)   -- restore original limit
+  assert(debug.setcstacklimit(origlimit) == 400)   -- restore original limit
 end
 
 
