diff --git a/src/backend/utils/adt/date.c b/src/backend/utils/adt/date.c index bdda749bed0d64cf26ee6066b486903e56cb7f13..9ead120245fb30d7797adf03cf76df904bd5ba29 100644 --- a/src/backend/utils/adt/date.c +++ b/src/backend/utils/adt/date.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/date.c,v 1.129 2007/02/27 23:48:07 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/date.c,v 1.130 2007/05/30 19:38:05 neilc Exp $ * *------------------------------------------------------------------------- */ @@ -1635,7 +1635,7 @@ time_text(PG_FUNCTION_ARGS) result = palloc(len); SET_VARSIZE(result, len); - memcpy(VARDATA(result), str, (len - VARHDRSZ)); + memcpy(VARDATA(result), str, len - VARHDRSZ); pfree(str); @@ -1651,11 +1651,9 @@ time_text(PG_FUNCTION_ARGS) Datum text_time(PG_FUNCTION_ARGS) { - text *str = PG_GETARG_TEXT_P(0); - int i; - char *sp, - *dp, - dstr[MAXDATELEN + 1]; + text *str = PG_GETARG_TEXT_P(0); + char dstr[MAXDATELEN + 1]; + size_t len; if (VARSIZE(str) - VARHDRSZ > MAXDATELEN) ereport(ERROR, @@ -1663,11 +1661,9 @@ text_time(PG_FUNCTION_ARGS) errmsg("invalid input syntax for type time: \"%s\"", VARDATA(str)))); - sp = VARDATA(str); - dp = dstr; - for (i = 0; i < (VARSIZE(str) - VARHDRSZ); i++) - *dp++ = *sp++; - *dp = '\0'; + len = VARSIZE(str) - VARHDRSZ; + memcpy(dstr, VARDATA(str), len); + dstr[len] = '\0'; return DirectFunctionCall3(time_in, CStringGetDatum(dstr),