diff options
author | Michael Meskes <meskes@postgresql.org> | 2013-07-19 08:59:20 +0200 |
---|---|---|
committer | Michael Meskes <meskes@postgresql.org> | 2013-07-19 09:04:39 +0200 |
commit | d29130bd0f099e0ba973e933bf39b719e2378968 (patch) | |
tree | 89ea05de5969755598a0e6c16946c31348c2e69f /src | |
parent | 57ddea3a276896eaa5bf533f24487c9a9a672d2a (diff) |
Initialize day of year value.
There are cases where the day of year value in struct tm is used, but it never
got calculated. Problem found by Coverity scan.
Diffstat (limited to 'src')
5 files changed, 20 insertions, 5 deletions
diff --git a/src/interfaces/ecpg/pgtypeslib/timestamp.c b/src/interfaces/ecpg/pgtypeslib/timestamp.c index f50feaf9cfa..7f1f44dea67 100644 --- a/src/interfaces/ecpg/pgtypeslib/timestamp.c +++ b/src/interfaces/ecpg/pgtypeslib/timestamp.c @@ -257,6 +257,8 @@ recalc_t: *tzn = NULL; } + tm->tm_yday = dDate - date2j(tm->tm_year, 1, 1) + 1; + return 0; } /* timestamp2tm() */ diff --git a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c index b0b3239b9fd..c49aad174b9 100644 --- a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c +++ b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c @@ -147,6 +147,12 @@ if (sqlca.sqlcode < 0) sqlprint ( );} free(text); free(out); + out = (char*) malloc(48); + i = PGTYPEStimestamp_fmt_asc(&ts1, out, 47, "Which is day number %j in %Y."); + printf("%s\n", out); + free(out); + + /* rdate_defmt_asc() */ date1 = 0; text = ""; @@ -431,16 +437,16 @@ if (sqlca.sqlcode < 0) sqlprint ( );} free(text); { ECPGtrans(__LINE__, NULL, "rollback"); -#line 359 "dt_test.pgc" +#line 365 "dt_test.pgc" if (sqlca.sqlcode < 0) sqlprint ( );} -#line 359 "dt_test.pgc" +#line 365 "dt_test.pgc" { ECPGdisconnect(__LINE__, "CURRENT"); -#line 360 "dt_test.pgc" +#line 366 "dt_test.pgc" if (sqlca.sqlcode < 0) sqlprint ( );} -#line 360 "dt_test.pgc" +#line 366 "dt_test.pgc" return (0); diff --git a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.stderr b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.stderr index c0033c52cc5..4c438f564a7 100644 --- a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.stderr +++ b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.stderr @@ -42,7 +42,7 @@ [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_get_data on line 38: RESULT: 2000-07-12 17:34:29 offset: -1; array: yes [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ECPGtrans on line 359: action "rollback"; connection "regress1" +[NO_PID]: ECPGtrans on line 365: action "rollback"; connection "regress1" [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_finish: connection regress1 closed [NO_PID]: sqlca: code: 0, state: 00000 diff --git a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.stdout b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.stdout index a2ff5f7a3b2..823b6e00623 100644 --- a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.stdout +++ b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.stdout @@ -6,6 +6,7 @@ date seems to get encoded to julian -622 m: 4, d: 19, y: 1998 date_day of 2003-12-04 17:34:29 is 4 Above date in format "(ddd), mmm. dd, yyyy, repeat: (ddd), mmm. dd, yyyy. end" is "(Thu), Dec. 04, 2003, repeat: (Thu), Dec. 04, 2003. end" +Which is day number 338 in 2003. date_defmt_asc1: 1995-12-25 date_defmt_asc2: 0095-12-25 date_defmt_asc3: 0095-12-25 diff --git a/src/interfaces/ecpg/test/pgtypeslib/dt_test.pgc b/src/interfaces/ecpg/test/pgtypeslib/dt_test.pgc index 4e3c4404437..5ae7cce2315 100644 --- a/src/interfaces/ecpg/test/pgtypeslib/dt_test.pgc +++ b/src/interfaces/ecpg/test/pgtypeslib/dt_test.pgc @@ -73,6 +73,12 @@ main(void) free(text); free(out); + out = (char*) malloc(48); + i = PGTYPEStimestamp_fmt_asc(&ts1, out, 47, "Which is day number %j in %Y."); + printf("%s\n", out); + free(out); + + /* rdate_defmt_asc() */ date1 = 0; text = ""; |