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.
REL9_1_STABLE
Michael Meskes 13 years ago
parent f4ceb7aa56
commit 4652abeb30
  1. 2
      src/interfaces/ecpg/pgtypeslib/timestamp.c
  2. 14
      src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c
  3. 2
      src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.stderr
  4. 1
      src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.stdout
  5. 6
      src/interfaces/ecpg/test/pgtypeslib/dt_test.pgc

@ -255,6 +255,8 @@ recalc_t:
*tzn = NULL;
}
tm->tm_yday = dDate - date2j(tm->tm_year, 1, 1) + 1;
return 0;
} /* timestamp2tm() */

@ -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);

@ -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: no
[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

@ -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

@ -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 = "";

Loading…
Cancel
Save