aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2011-05-09 11:51:19 +0200
committerMike Pall <mike>2011-05-09 11:52:54 +0200
commitd9c1f771a7575510a9612e0a67be6c61d83de982 (patch)
tree2720ba6f2288adbd9a84c178d10c228803e144bf
parent868ecad32ba7fb3eb763642e22ebb06938fdb359 (diff)
downloadluajit-d9c1f771a7575510a9612e0a67be6c61d83de982.tar.gz
luajit-d9c1f771a7575510a9612e0a67be6c61d83de982.tar.bz2
luajit-d9c1f771a7575510a9612e0a67be6c61d83de982.zip
FFI: Allow setting errno with ffi.errno(), too.
-rw-r--r--doc/ext_ffi_api.html10
-rw-r--r--src/lib_ffi.c5
2 files changed, 10 insertions, 5 deletions
diff --git a/doc/ext_ffi_api.html b/doc/ext_ffi_api.html
index 2d69cb49..e865a5f7 100644
--- a/doc/ext_ffi_api.html
+++ b/doc/ext_ffi_api.html
@@ -336,14 +336,16 @@ objects.
336 336
337<h2 id="util">Utility Functions</h2> 337<h2 id="util">Utility Functions</h2>
338 338
339<h3 id="ffi_errno"><tt>err = ffi.errno()</tt></h3> 339<h3 id="ffi_errno"><tt>err = ffi.errno([newerr])</tt></h3>
340<p> 340<p>
341Returns the error number set by the last C&nbsp;function call which 341Returns the error number set by the last C&nbsp;function call which
342indicated an error condition. 342indicated an error condition. If the optional <tt>newerr</tt> argument
343is present, the error number is set to the new value and the previous
344value is returned.
343</p> 345</p>
344<p> 346<p>
345This function offers a portable and OS-independent way to get the error 347This function offers a portable and OS-independent way to get and set the
346number. Note that only <em>some</em> C&nbsp;functions set the error 348error number. Note that only <em>some</em> C&nbsp;functions set the error
347number. And it's only significant if the function actually indicated an 349number. And it's only significant if the function actually indicated an
348error condition (e.g. with a return value of <tt>-1</tt> or 350error condition (e.g. with a return value of <tt>-1</tt> or
349<tt>NULL</tt>). Otherwise, it may or may not contain any previously set 351<tt>NULL</tt>). Otherwise, it may or may not contain any previously set
diff --git a/src/lib_ffi.c b/src/lib_ffi.c
index 321de499..0f8d5013 100644
--- a/src/lib_ffi.c
+++ b/src/lib_ffi.c
@@ -545,7 +545,10 @@ LJLIB_CF(ffi_offsetof)
545 545
546LJLIB_CF(ffi_errno) 546LJLIB_CF(ffi_errno)
547{ 547{
548 setintV(L->top++, errno); 548 int err = errno;
549 if (L->top > L->base)
550 errno = ffi_checkint(L, 1);
551 setintV(L->top++, err);
549 return 1; 552 return 1;
550} 553}
551 554