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

Commit65504b7

Browse files
committed
Replace remaining strtok() with strtok_r()
for thread-safety in the server in the futureReviewed-by: Kyotaro Horiguchi <horikyota.ntt@gmail.com>Reviewed-by: David Steele <david@pgmasters.net>Discussion:https://www.postgresql.org/message-id/flat/79692bf9-17d3-41e6-b9c9-fc8c3944222a@eisentraut.org
1 parent4d130b2 commit65504b7

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

‎src/backend/utils/misc/tzparser.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ validateTzEntry(tzEntry *tzentry)
9797
staticbool
9898
splitTzLine(constchar*filename,intlineno,char*line,tzEntry*tzentry)
9999
{
100+
char*brkl;
100101
char*abbrev;
101102
char*offset;
102103
char*offset_endptr;
@@ -106,7 +107,7 @@ splitTzLine(const char *filename, int lineno, char *line, tzEntry *tzentry)
106107
tzentry->lineno=lineno;
107108
tzentry->filename=filename;
108109

109-
abbrev=strtok(line,WHITESPACE);
110+
abbrev=strtok_r(line,WHITESPACE,&brkl);
110111
if (!abbrev)
111112
{
112113
GUC_check_errmsg("missing time zone abbreviation in time zone file \"%s\", line %d",
@@ -115,7 +116,7 @@ splitTzLine(const char *filename, int lineno, char *line, tzEntry *tzentry)
115116
}
116117
tzentry->abbrev=pstrdup(abbrev);
117118

118-
offset=strtok(NULL,WHITESPACE);
119+
offset=strtok_r(NULL,WHITESPACE,&brkl);
119120
if (!offset)
120121
{
121122
GUC_check_errmsg("missing time zone offset in time zone file \"%s\", line %d",
@@ -135,11 +136,11 @@ splitTzLine(const char *filename, int lineno, char *line, tzEntry *tzentry)
135136
return false;
136137
}
137138

138-
is_dst=strtok(NULL,WHITESPACE);
139+
is_dst=strtok_r(NULL,WHITESPACE,&brkl);
139140
if (is_dst&&pg_strcasecmp(is_dst,"D")==0)
140141
{
141142
tzentry->is_dst= true;
142-
remain=strtok(NULL,WHITESPACE);
143+
remain=strtok_r(NULL,WHITESPACE,&brkl);
143144
}
144145
else
145146
{
@@ -158,7 +159,7 @@ splitTzLine(const char *filename, int lineno, char *line, tzEntry *tzentry)
158159
tzentry->zone=pstrdup(offset);
159160
tzentry->offset=0*SECS_PER_HOUR;
160161
tzentry->is_dst= false;
161-
remain=strtok(NULL,WHITESPACE);
162+
remain=strtok_r(NULL,WHITESPACE,&brkl);
162163
}
163164

164165
if (!remain)/* no more non-whitespace chars */
@@ -394,8 +395,9 @@ ParseTzFile(const char *filename, int depth,
394395
{
395396
/* pstrdup so we can use filename in result data structure */
396397
char*includeFile=pstrdup(line+strlen("@INCLUDE"));
398+
char*brki;
397399

398-
includeFile=strtok(includeFile,WHITESPACE);
400+
includeFile=strtok_r(includeFile,WHITESPACE,&brki);
399401
if (!includeFile|| !*includeFile)
400402
{
401403
GUC_check_errmsg("@INCLUDE without file name in time zone file \"%s\", line %d",

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp