Bläddra i källkod

[Minor] Lua_cdb: Avoid extra copy on lookup

tags/3.1
Vsevolod Stakhov 2 år sedan
förälder
incheckning
e891c9546a
1 ändrade filer med 1 tillägg och 9 borttagningar
  1. 1
    9
      src/lua/lua_cdb.c

+ 1
- 9
src/lua/lua_cdb.c Visa fil

struct cdb *cdb = lua_check_cdb (L, 1); struct cdb *cdb = lua_check_cdb (L, 1);
gsize klen; gsize klen;
const gchar *what = luaL_checklstring(L, 2, &klen); const gchar *what = luaL_checklstring(L, 2, &klen);
gchar *value;
gsize vlen;
gint64 vpos;


if (!cdb || what == NULL) { if (!cdb || what == NULL) {
return lua_error (L); return lua_error (L);


if (cdb_find (cdb, what, klen) > 0) { if (cdb_find (cdb, what, klen) > 0) {
/* Extract and push value to lua as string */ /* Extract and push value to lua as string */
vpos = cdb_datapos (cdb);
vlen = cdb_datalen (cdb);
value = g_malloc (vlen);
cdb_read (cdb, value, vlen, vpos);
lua_pushlstring (L, value, vlen);
g_free (value);
lua_pushlstring (L, cdb_getdata (cdb), cdb_datalen (cdb));
} }
else { else {
lua_pushnil (L); lua_pushnil (L);

Laddar…
Avbryt
Spara