aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2011-05-08 22:34:40 +0200
committerMike Pall <mike>2011-05-08 22:34:40 +0200
commit868ecad32ba7fb3eb763642e22ebb06938fdb359 (patch)
tree3d5651f9d73145fb3a2a8a8c6ab125feae359ba1
parent77ba7726e2f8b6ffe86be6c89b5beda5cab86d2d (diff)
downloadluajit-868ecad32ba7fb3eb763642e22ebb06938fdb359.tar.gz
luajit-868ecad32ba7fb3eb763642e22ebb06938fdb359.tar.bz2
luajit-868ecad32ba7fb3eb763642e22ebb06938fdb359.zip
FFI: Add ffi.errno().
-rw-r--r--doc/ext_ffi_api.html22
-rw-r--r--src/lib_ffi.c8
2 files changed, 30 insertions, 0 deletions
diff --git a/doc/ext_ffi_api.html b/doc/ext_ffi_api.html
index b1b42878..2d69cb49 100644
--- a/doc/ext_ffi_api.html
+++ b/doc/ext_ffi_api.html
@@ -336,6 +336,28 @@ 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>
340<p>
341Returns the error number set by the last C&nbsp;function call which
342indicated an error condition.
343</p>
344<p>
345This function offers a portable and OS-independent way to get the error
346number. Note that only <em>some</em> C&nbsp;functions set the error
347number. And it's only significant if the function actually indicated an
348error 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
350value.
351</p>
352<p>
353You're advised to call this function only when needed and as close as
354possible after the return of the related C&nbsp;function. The
355<tt>errno</tt> value is preserved across hooks, memory allocations,
356invocations of the JIT compiler and other internal VM activity. The same
357applies to the value returned by <tt>GetLastError()</tt> on Windows, but
358you need to declare and call it yourself.
359</p>
360
339<h3 id="ffi_string"><tt>str = ffi.string(ptr [,len])</tt></h3> 361<h3 id="ffi_string"><tt>str = ffi.string(ptr [,len])</tt></h3>
340<p> 362<p>
341Creates an interned Lua string from the data pointed to by 363Creates an interned Lua string from the data pointed to by
diff --git a/src/lib_ffi.c b/src/lib_ffi.c
index 27996f0e..321de499 100644
--- a/src/lib_ffi.c
+++ b/src/lib_ffi.c
@@ -6,6 +6,8 @@
6#define lib_ffi_c 6#define lib_ffi_c
7#define LUA_LIB 7#define LUA_LIB
8 8
9#include <errno.h>
10
9#include "lua.h" 11#include "lua.h"
10#include "lauxlib.h" 12#include "lauxlib.h"
11#include "lualib.h" 13#include "lualib.h"
@@ -541,6 +543,12 @@ LJLIB_CF(ffi_offsetof)
541 return 0; 543 return 0;
542} 544}
543 545
546LJLIB_CF(ffi_errno)
547{
548 setintV(L->top++, errno);
549 return 1;
550}
551
544LJLIB_CF(ffi_string) LJLIB_REC(.) 552LJLIB_CF(ffi_string) LJLIB_REC(.)
545{ 553{
546 CTState *cts = ctype_cts(L); 554 CTState *cts = ctype_cts(L);