(decode_type): fix generation of decoding information for

TSequenceOf.


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@6393 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
1999-07-03 02:28:55 +00:00
parent 509f66086f
commit 8c03752be7

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997 Kungliga Tekniska H<>gskolan * Copyright (c) 1997 - 1999 Kungliga Tekniska H<>gskolan
* (Royal Institute of Technology, Stockholm, Sweden). * (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved. * All rights reserved.
* *
@@ -213,15 +213,22 @@ decode_type (char *name, Type *t)
"len = reallen;\n"); "len = reallen;\n");
fprintf (codefile, fprintf (codefile,
"{\n"
"size_t origlen = len;\n"
"int oldret = ret;\n"
"ret = 0;\n"
"(%s)->len = 0;\n" "(%s)->len = 0;\n"
"(%s)->val = NULL;\n" "(%s)->val = NULL;\n"
"while(len > 0) {\n" "while(ret < origlen) {\n"
"(%s)->len++;\n" "(%s)->len++;\n"
"(%s)->val = realloc((%s)->val, sizeof(*((%s)->val)) * (%s)->len);\n", "(%s)->val = realloc((%s)->val, sizeof(*((%s)->val)) * (%s)->len);\n",
name, name, name, name, name, name, name); name, name, name, name, name, name, name);
asprintf (&n, "&(%s)->val[(%s)->len-1]", name, name); asprintf (&n, "&(%s)->val[(%s)->len-1]", name, name);
decode_type (n, t->subtype); decode_type (n, t->subtype);
fprintf (codefile, fprintf (codefile,
"len = origlen - ret;\n"
"}\n"
"ret += oldret;\n"
"}\n"); "}\n");
free (n); free (n);
break; break;