op,name,params = m.group(1),m.group(2),m.group(3)
iterations=1
- if "2" in params:
+ if "2" in params or "s" in params:
iterations=2
for iteration in range(iterations):
else:
type,pname="multiname_t*","name"
elif c == "s":
- type,pname="char*","s"
+ if iteration==0:
+ type,pname="char*","name"
+ else:
+ type,pname="string_t*","s"
elif c in "nubs":
type,pname="int","v"
elif c == "m":
- type,pname="abc_method_body_t*","m"
- elif c == "i":
type,pname="abc_method_t*","m"
+ elif c == "i":
+ type,pname="abc_method_body_t*","m"
elif c == "c":
type,pname="abc_class_t*","m"
elif c == "j":
elif(c == "b"):
foc.write(" self->data[%d] = (void*)(ptroff_t)%s;\n" % (i,pname))
elif(c == "s"):
- foc.write(" self->data[%d] = strdup(%s);\n" % (i,pname))
+ if iteration==0:
+ foc.write(" self->data[%d] = string_new4(%s);\n" % (i,pname))
+ else:
+ foc.write(" self->data[%d] = string_dup3(%s);\n" % (i,pname))
elif(c == "m"):
foc.write(" self->data[%d] = %s;\n" % (i,pname))
elif(c == "c"):