Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitc4a13c7

Browse files
author
Michael Meskes
committed
When creating a varchar struct name braces must be discarded.
1 parentf900aff commitc4a13c7

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

‎src/interfaces/ecpg/ChangeLog

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2390,6 +2390,10 @@ Tue, 14 Oct 2008 11:25:51 +0200
23902390
Sat, 25 Oct 2008 16:34:28 +0200
23912391

23922392
- Free allocated memory even if the next alloc failed with ENOMEM.
2393+
2394+
Wed, 26 Nov 2008 14:09:08 +0100
2395+
2396+
- When creating a varchar struct name braces must be discarded.
23932397
- Set pgtypes library version to 3.1.
23942398
- Set compat library version to 3.1.
23952399
- Set ecpg library version to 6.2.

‎src/interfaces/ecpg/preproc/type.c

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/type.c,v 1.79 2008/05/16 15:20:04 petere Exp $ */
1+
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/type.c,v 1.80 2008/11/26 13:18:22 meskes Exp $ */
22

33
#include"postgres_fe.h"
44

@@ -327,8 +327,9 @@ ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type,
327327
fprintf(o,"\n\tECPGt_descriptor, %s, 0L, 0L, 0L, ",name);
328328
else
329329
{
330-
char*variable= (char*)mm_alloc(strlen(name)+ ((prefix==NULL) ?0 :strlen(prefix))+4);
331-
char*offset= (char*)mm_alloc(strlen(name)+strlen("sizeof(struct varchar_)")+1+strlen(varcharsize)+sizeof(int)*CHAR_BIT*10 /3);
330+
char*variable= (char*)mm_alloc(strlen(name)+ ((prefix==NULL) ?0 :strlen(prefix))+4);
331+
char*offset= (char*)mm_alloc(strlen(name)+strlen("sizeof(struct varchar_)")+1+strlen(varcharsize)+sizeof(int)*CHAR_BIT*10 /3);
332+
char*var_name;
332333

333334
switch (type)
334335
{
@@ -350,10 +351,14 @@ ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type,
350351
else
351352
sprintf(variable,"&(%s%s)",prefix ?prefix :"",name);
352353

354+
/* remove trailing [] is name is array element */
355+
var_name=strdup(name);
356+
*(strchrnul(var_name,'['))='\0';
353357
if (lineno)
354-
sprintf(offset,"sizeof(struct varchar_%s_%d)",name,lineno);
358+
sprintf(offset,"sizeof(struct varchar_%s_%d)",var_name,lineno);
355359
else
356-
sprintf(offset,"sizeof(struct varchar_%s)",name);
360+
sprintf(offset,"sizeof(struct varchar_%s)",var_name);
361+
free(var_name);
357362
break;
358363
caseECPGt_char:
359364
caseECPGt_unsigned_char:

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp