(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:
@@ -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;
|
||||||
|
Reference in New Issue
Block a user