aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/ecpg/preproc/variable.c
diff options
context:
space:
mode:
authorMichael Meskes <meskes@postgresql.org>2012-11-29 17:12:00 +0100
committerMichael Meskes <meskes@postgresql.org>2012-11-29 17:14:49 +0100
commit44fe8ae9f97cc78f8641c4bffdd8a3e8b55b4690 (patch)
tree9b1ba1d829a228b9c944319172ba1f2c609720d7 /src/interfaces/ecpg/preproc/variable.c
parent94c014b53283fc8b5afe7f3c4ac989dda4b652d0 (diff)
downloadpostgresql-44fe8ae9f97cc78f8641c4bffdd8a3e8b55b4690.tar.gz
postgresql-44fe8ae9f97cc78f8641c4bffdd8a3e8b55b4690.zip
When processing nested structure pointer variables ecpg always expected an
array datatype which of course is wrong. Applied patch by Muhammad Usama <m.usama@gmail.com> to fix this.
Diffstat (limited to 'src/interfaces/ecpg/preproc/variable.c')
-rw-r--r--src/interfaces/ecpg/preproc/variable.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/interfaces/ecpg/preproc/variable.c b/src/interfaces/ecpg/preproc/variable.c
index e08e14ac18c..6ff574bbd92 100644
--- a/src/interfaces/ecpg/preproc/variable.c
+++ b/src/interfaces/ecpg/preproc/variable.c
@@ -100,7 +100,11 @@ find_struct_member(char *name, char *str, struct ECPGstruct_member * members, in
}
break;
case '-':
- return (find_struct_member(name, end, members->type->u.element->u.members, brace_level));
+ if (members->type->type == ECPGt_array)
+ return (find_struct_member(name, ++end, members->type->u.element->u.members, brace_level));
+ else
+ return (find_struct_member(name, ++end, members->type->u.members, brace_level));
+ break;
break;
case '.':
if (members->type->type == ECPGt_array)