fix bug in ravi_create_slice()

pull/81/head
dibyendumajumdar 9 years ago
parent add5ac8368
commit 17a98320f5

@ -88,11 +88,11 @@ if (CMAKE_COMPILER_IS_GNUCXX AND NOT APPLE)
endif ()
# -fsanitize=bounds -fsanitize=alignment -fsanitize=object-size
set(SANITIZER_FLAGS "-fsanitize=address")
set(CMAKE_C_FLAGS_DEBUG "${SANITIZER_FLAGS} -Werror -std=c99 -O0 -g3 -Wall -Wextra -DLUA_COMPAT_5_2 ${CXX_OPTIONS}")
set(CMAKE_C_FLAGS_DEBUG "${SANITIZER_FLAGS} -fno-omit-frame-pointer -Werror -std=c99 -O0 -g3 -Wall -Wextra -DLUA_COMPAT_5_2 ${CXX_OPTIONS}")
set(CMAKE_C_FLAGS_RELEASE "-Werror -std=c99 -O3 -Wall -Wextra -DLUA_COMPAT_5_2 ${CXX_OPTIONS}")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${SANITIZER_FLAGS} -Werror -std=c99 -O1 -g3 -Wall -Wextra -DLUA_COMPAT_5_2 ${CXX_OPTIONS}")
set(CMAKE_CXX_FLAGS_RELEASE "-Werror -fno-rtti -O3 -Wall -Wno-sign-compare -std=c++11 -fno-exceptions -DLUA_COMPAT_5_2 ${CXX_OPTIONS}")
set(CMAKE_CXX_FLAGS_DEBUG "${SANITIZER_FLAGS} -Werror -fno-rtti -O0 -g3 -Wall -Wno-sign-compare -std=c++11 -fno-exceptions -DLUA_COMPAT_5_2 ${CXX_OPTIONS}")
set(CMAKE_CXX_FLAGS_DEBUG "${SANITIZER_FLAGS} -fno-omit-frame-pointer -Werror -fno-rtti -O0 -g3 -Wall -Wno-sign-compare -std=c++11 -fno-exceptions -DLUA_COMPAT_5_2 ${CXX_OPTIONS}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${SANITIZER_FLAGS} -Werror -fno-rtti -O1 -g3 -Wall -Wno-sign-compare -std=c++11 -fno-exceptions -DLUA_COMPAT_5_2 ${CXX_OPTIONS}")
# In case we are using gcc 5.1 set ABI version
add_definitions("-D_GLIBCXX_USE_CXX11_ABI=0")
@ -236,4 +236,4 @@ install(FILES ${LUA_HEADERS}
install(TARGETS ravi ravi-bin
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib)
LIBRARY DESTINATION lib)

@ -220,4 +220,4 @@ print(matrix.getrow(a, y)[y])
--ravi.dumpllvm(matrix.mul2)
--ravi.dumplua(matrix.T2)
--ravi.dumplua(matrix.T2)

@ -886,8 +886,9 @@ LUA_API void ravi_create_slice(lua_State *L, int idx, unsigned int start,
unsigned int len) {
TValue *parent;
Table *slice;
lua_lock(L);
const char *errmsg = NULL;
lua_lock(L);
luaC_checkGC(L);
/* The do-while loop here is just for error handling */
parent = index2addr(L, idx);
if (!ttistable(parent)) {
@ -903,7 +904,6 @@ LUA_API void ravi_create_slice(lua_State *L, int idx, unsigned int start,
errmsg = "cannot create a slice of given bounds";
goto done;
}
luaC_checkGC(L);
slice = raviH_new_slice(L, parent, start, len);
sethvalue(L, L->top, slice);
api_incr_top(L);

Loading…
Cancel
Save