diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index 47dda13927f..ba9e96d64d1 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -1247,14 +1247,13 @@ class ConstDefiner(PropertyDefiner): def stringDecl(const): name = const.identifier.name - return "static %s_name: [u8, ..%i] = %s;\n" % (name, len(name) + 1, - str_to_const_array(name)) + return "static %s_name: &'static [u8] = &%s;\n" % (name, str_to_const_array(name)) decls = ''.join([stringDecl(m) for m in array]) return decls + self.generatePrefableArray( array, name, - ' ConstantSpec { name: &%s_name as *u8 as *libc::c_char, value: %s }', + ' ConstantSpec { name: %s_name, value: %s }', None, 'ConstantSpec', specData) diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs index f6e9a1e1ba6..2da31f8bf2f 100644 --- a/src/components/script/dom/bindings/utils.rs +++ b/src/components/script/dom/bindings/utils.rs @@ -192,7 +192,7 @@ pub enum ConstantVal { #[deriving(Clone)] pub struct ConstantSpec { - pub name: *libc::c_char, + pub name: &'static [u8], 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 { constants.iter().all(|spec| { - assert!(spec.name.is_not_null()); let jsval = match spec.value { NullVal => NullValue(), IntVal(i) => Int32Value(i), @@ -323,7 +322,8 @@ fn DefineConstants(cx: *mut JSContext, obj: *mut JSObject, constants: &'static [ VoidVal => UndefinedValue(), }; 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_PERMANENT) != 0 }