diff options
-rw-r--r-- | template/prelude.c.tmpl | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/template/prelude.c.tmpl b/template/prelude.c.tmpl index f755a39d8c..72c8c7107b 100644 --- a/template/prelude.c.tmpl +++ b/template/prelude.c.tmpl @@ -85,7 +85,10 @@ Prelude.new(output && output[/\w+(?=_prelude.c\b)/] || 'prelude', ARGV, vpath).i % preludes = @preludes.values.sort % preludes.each {|i, prelude, lines, sub| -static const char prelude_name<%=i%><%=%>[] = "<%=c_esc(prelude_name(*prelude))%>"; +% name = prelude_name(*prelude) +static const struct { + char L0[<%=name.size%><%=%>]; +} prelude_name<%=i%><%=%> = {"<%=c_esc(name)%>"}; static const struct { % size = beg = 0 % lines.each_with_index {|(line, comment), n| @@ -135,6 +138,7 @@ prelude_prefix_path(VALUE self) % end % unless preludes.empty? +#define PRELUDE_STR(n) rb_usascii_str_new_static(prelude_##n.L0, sizeof(prelude_##n)) static void prelude_eval(VALUE code, VALUE name, int line) { @@ -185,8 +189,8 @@ prelude_require(VALUE self, VALUE nth) % @preludes.each_value do |i, prelude, lines, sub| % if sub case <%=i%><%=%>: - code = rb_usascii_str_new(prelude_code<%=i%><%=%>.L0, sizeof(prelude_code<%=i%><%=%>)); - name = rb_usascii_str_new(prelude_name<%=i%><%=%>, sizeof(prelude_name<%=i%><%=%>) - 1); + code = PRELUDE_STR(code<%=i%><%=%>); + name = PRELUDE_STR(name<%=i%><%=%>); break; % end % end @@ -218,10 +222,7 @@ Init_<%=@init_name%><%=%>(void) % end % preludes.each do |i, prelude, lines, sub| % next if sub - prelude_eval( - rb_usascii_str_new(prelude_code<%=i%><%=%>.L0, sizeof(prelude_code<%=i%><%=%>)), - rb_usascii_str_new(prelude_name<%=i%><%=%>, sizeof(prelude_name<%=i%><%=%>) - 1), - 1); + prelude_eval(PRELUDE_STR(code<%=i%><%=%>), PRELUDE_STR(name<%=i%><%=%>), 1); % end % if @have_sublib rb_gc_force_recycle(prelude); |