mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Store a slice in ConstantSpec, rather than a raw pointer.
This commit is contained in:
parent
ba68203ebf
commit
d882bb7cc0
2 changed files with 5 additions and 6 deletions
|
@ -1247,14 +1247,13 @@ class ConstDefiner(PropertyDefiner):
|
||||||
|
|
||||||
def stringDecl(const):
|
def stringDecl(const):
|
||||||
name = const.identifier.name
|
name = const.identifier.name
|
||||||
return "static %s_name: [u8, ..%i] = %s;\n" % (name, len(name) + 1,
|
return "static %s_name: &'static [u8] = &%s;\n" % (name, str_to_const_array(name))
|
||||||
str_to_const_array(name))
|
|
||||||
|
|
||||||
decls = ''.join([stringDecl(m) for m in array])
|
decls = ''.join([stringDecl(m) for m in array])
|
||||||
|
|
||||||
return decls + self.generatePrefableArray(
|
return decls + self.generatePrefableArray(
|
||||||
array, name,
|
array, name,
|
||||||
' ConstantSpec { name: &%s_name as *u8 as *libc::c_char, value: %s }',
|
' ConstantSpec { name: %s_name, value: %s }',
|
||||||
None,
|
None,
|
||||||
'ConstantSpec',
|
'ConstantSpec',
|
||||||
specData)
|
specData)
|
||||||
|
|
|
@ -192,7 +192,7 @@ pub enum ConstantVal {
|
||||||
|
|
||||||
#[deriving(Clone)]
|
#[deriving(Clone)]
|
||||||
pub struct ConstantSpec {
|
pub struct ConstantSpec {
|
||||||
pub name: *libc::c_char,
|
pub name: &'static [u8],
|
||||||
pub value: ConstantVal
|
pub value: ConstantVal
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -313,7 +313,6 @@ fn CreateInterfaceObject(cx: *mut JSContext, global: *mut JSObject, receiver: *m
|
||||||
|
|
||||||
fn DefineConstants(cx: *mut JSContext, obj: *mut JSObject, constants: &'static [ConstantSpec]) -> bool {
|
fn DefineConstants(cx: *mut JSContext, obj: *mut JSObject, constants: &'static [ConstantSpec]) -> bool {
|
||||||
constants.iter().all(|spec| {
|
constants.iter().all(|spec| {
|
||||||
assert!(spec.name.is_not_null());
|
|
||||||
let jsval = match spec.value {
|
let jsval = match spec.value {
|
||||||
NullVal => NullValue(),
|
NullVal => NullValue(),
|
||||||
IntVal(i) => Int32Value(i),
|
IntVal(i) => Int32Value(i),
|
||||||
|
@ -323,7 +322,8 @@ fn DefineConstants(cx: *mut JSContext, obj: *mut JSObject, constants: &'static [
|
||||||
VoidVal => UndefinedValue(),
|
VoidVal => UndefinedValue(),
|
||||||
};
|
};
|
||||||
unsafe {
|
unsafe {
|
||||||
JS_DefineProperty(cx, obj, spec.name, jsval, None, None,
|
JS_DefineProperty(cx, obj, spec.name.as_ptr() as *libc::c_char,
|
||||||
|
jsval, None, None,
|
||||||
JSPROP_ENUMERATE | JSPROP_READONLY |
|
JSPROP_ENUMERATE | JSPROP_READONLY |
|
||||||
JSPROP_PERMANENT) != 0
|
JSPROP_PERMANENT) != 0
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue