Skip to content

Commit af31dbd

Browse files
committed
Use c string literal in few places
1 parent 9ae3cb0 commit af31dbd

File tree

1 file changed

+50
-57
lines changed

1 file changed

+50
-57
lines changed

src/util/userdata.rs

Lines changed: 50 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use std::ffi::CStr;
21
use std::os::raw::{c_int, c_void};
32
use std::{ptr, str};
43

@@ -222,50 +221,47 @@ unsafe fn init_userdata_metatable_index(state: *mut ffi::lua_State) -> Result<()
222221
ffi::lua_pop(state, 1);
223222

224223
// Create and cache `__index` generator
225-
let code = cstr!(
226-
r#"
227-
local error, isfunction, istable = ...
228-
return function (__index, field_getters, methods)
229-
-- Common case: has field getters and index is a table
230-
if field_getters ~= nil and methods == nil and istable(__index) then
231-
return function (self, key)
232-
local field_getter = field_getters[key]
233-
if field_getter ~= nil then
234-
return field_getter(self)
235-
end
236-
return __index[key]
224+
let code = cr#"
225+
local error, isfunction, istable = ...
226+
return function (__index, field_getters, methods)
227+
-- Common case: has field getters and index is a table
228+
if field_getters ~= nil and methods == nil and istable(__index) then
229+
return function (self, key)
230+
local field_getter = field_getters[key]
231+
if field_getter ~= nil then
232+
return field_getter(self)
237233
end
234+
return __index[key]
238235
end
236+
end
239237
240-
return function (self, key)
241-
if field_getters ~= nil then
242-
local field_getter = field_getters[key]
243-
if field_getter ~= nil then
244-
return field_getter(self)
245-
end
238+
return function (self, key)
239+
if field_getters ~= nil then
240+
local field_getter = field_getters[key]
241+
if field_getter ~= nil then
242+
return field_getter(self)
246243
end
244+
end
247245
248-
if methods ~= nil then
249-
local method = methods[key]
250-
if method ~= nil then
251-
return method
252-
end
246+
if methods ~= nil then
247+
local method = methods[key]
248+
if method ~= nil then
249+
return method
253250
end
251+
end
254252
255-
if isfunction(__index) then
256-
return __index(self, key)
257-
elseif __index == nil then
258-
error("attempt to get an unknown field '"..key.."'")
259-
else
260-
return __index[key]
261-
end
253+
if isfunction(__index) then
254+
return __index(self, key)
255+
elseif __index == nil then
256+
error("attempt to get an unknown field '"..key.."'")
257+
else
258+
return __index[key]
262259
end
263260
end
264-
"#
265-
);
266-
let code_len = CStr::from_ptr(code).to_bytes().len();
261+
end
262+
"#;
267263
protect_lua!(state, 0, 1, |state| {
268-
let ret = ffi::luaL_loadbuffer(state, code, code_len, cstr!("__mlua_index"));
264+
let ret = ffi::luaL_loadbuffer(state, code.as_ptr(), code.count_bytes(), cstr!("__mlua_index"));
269265
if ret != ffi::LUA_OK {
270266
ffi::lua_error(state);
271267
}
@@ -293,33 +289,30 @@ unsafe fn init_userdata_metatable_newindex(state: *mut ffi::lua_State) -> Result
293289
ffi::lua_pop(state, 1);
294290

295291
// Create and cache `__newindex` generator
296-
let code = cstr!(
297-
r#"
298-
local error, isfunction = ...
299-
return function (__newindex, field_setters)
300-
return function (self, key, value)
301-
if field_setters ~= nil then
302-
local field_setter = field_setters[key]
303-
if field_setter ~= nil then
304-
field_setter(self, value)
305-
return
306-
end
292+
let code = cr#"
293+
local error, isfunction = ...
294+
return function (__newindex, field_setters)
295+
return function (self, key, value)
296+
if field_setters ~= nil then
297+
local field_setter = field_setters[key]
298+
if field_setter ~= nil then
299+
field_setter(self, value)
300+
return
307301
end
302+
end
308303
309-
if isfunction(__newindex) then
310-
__newindex(self, key, value)
311-
elseif __newindex == nil then
312-
error("attempt to set an unknown field '"..key.."'")
313-
else
314-
__newindex[key] = value
315-
end
304+
if isfunction(__newindex) then
305+
__newindex(self, key, value)
306+
elseif __newindex == nil then
307+
error("attempt to set an unknown field '"..key.."'")
308+
else
309+
__newindex[key] = value
316310
end
317311
end
318-
"#
319-
);
320-
let code_len = CStr::from_ptr(code).to_bytes().len();
312+
end
313+
"#;
321314
protect_lua!(state, 0, 1, |state| {
322-
let ret = ffi::luaL_loadbuffer(state, code, code_len, cstr!("__mlua_newindex"));
315+
let ret = ffi::luaL_loadbuffer(state, code.as_ptr(), code.count_bytes(), cstr!("__mlua_newindex"));
323316
if ret != ffi::LUA_OK {
324317
ffi::lua_error(state);
325318
}

0 commit comments

Comments
 (0)