On 2011-08-04 15:43, Fabian Groffen wrote:
> Changeset: ab7648679187 for MonetDB
> URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ab7648679187
> Modified Files:
>       sql/backends/monet5/sql_gencode.c
> Branch: Aug2011
> Log Message:
> 
> _dumpstmt: avoid alloca by using fixed buffer like dump_header
> 
> 512 bytes aparently is considered enough here.  This may bite us
> someday, since our specs define column, table and schema names each to
> be 1024 bytes wide at max.
> 
> 
> diffs (19 lines):
> 
> diff --git a/sql/backends/monet5/sql_gencode.c 
> b/sql/backends/monet5/sql_gencode.c
> --- a/sql/backends/monet5/sql_gencode.c
> +++ b/sql/backends/monet5/sql_gencode.c
> @@ -1778,13 +1778,9 @@ _dumpstmt(backend *sql, MalBlkPtr mb, st
>                                       char *cn = column_name(sql->mvc->sa, c);
>                                       char *ntn = sql_escape_ident(tn);
>                                       char *nsn = sql_escape_ident(sn);
> -                                     char *fqtn = alloca(sizeof(char) * 
> (strlen(nsn) + 1 +
> -                                                             strlen(ntn) + 
> 1));
> +                                     char fqtn[512];
>  
> -                                     fqtn[0]=0;
> -                                     strcat(fqtn, nsn);
> -                                     strcat(fqtn, ".");
> -                                     strcat(fqtn, ntn);
> +                                     snprintf(fqtn, 512, "%s.%s", nsn, ntn);

I would use sizeof(fqtn) here so that you only need to change the value
once (when you change it).

>                                       q = newStmt2(mb, sqlRef, 
> exportValueRef);
>                                       s->nr = getDestVar(q);
>                                       q = pushInt(mb, q, sql->mvc->type);
> _______________________________________________
> Checkin-list mailing list
> [email protected]
> http://mail.monetdb.org/mailman/listinfo/checkin-list


-- 
Sjoerd Mullender
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to