Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gaoqiong
pybind11
Commits
e791ec4e
Unverified
Commit
e791ec4e
authored
Feb 08, 2021
by
Karthik Nishanth
Committed by
GitHub
Feb 08, 2021
Browse files
fix: add null pointer check with std::localtime (#2846)
parent
948d09d6
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
8 additions
and
1 deletion
+8
-1
include/pybind11/chrono.h
include/pybind11/chrono.h
+8
-1
No files found.
include/pybind11/chrono.h
View file @
e791ec4e
...
@@ -161,9 +161,16 @@ public:
...
@@ -161,9 +161,16 @@ public:
// > If std::time_t has lower precision, it is implementation-defined whether the value is rounded or truncated.
// > If std::time_t has lower precision, it is implementation-defined whether the value is rounded or truncated.
// (https://en.cppreference.com/w/cpp/chrono/system_clock/to_time_t)
// (https://en.cppreference.com/w/cpp/chrono/system_clock/to_time_t)
std
::
time_t
tt
=
system_clock
::
to_time_t
(
time_point_cast
<
system_clock
::
duration
>
(
src
-
us
));
std
::
time_t
tt
=
system_clock
::
to_time_t
(
time_point_cast
<
system_clock
::
duration
>
(
src
-
us
));
// std::localtime returns a pointer to a static internal std::tm object on success,
// or null pointer otherwise
std
::
tm
*
localtime_ptr
=
std
::
localtime
(
&
tt
);
if
(
!
localtime_ptr
)
throw
cast_error
(
"Unable to represent system_clock in local time"
);
// this function uses static memory so it's best to copy it out asap just in case
// this function uses static memory so it's best to copy it out asap just in case
// otherwise other code that is using localtime may break this (not just python code)
// otherwise other code that is using localtime may break this (not just python code)
std
::
tm
localtime
=
*
std
::
localtime
(
&
tt
)
;
std
::
tm
localtime
=
*
localtime
_ptr
;
return
PyDateTime_FromDateAndTime
(
localtime
.
tm_year
+
1900
,
return
PyDateTime_FromDateAndTime
(
localtime
.
tm_year
+
1900
,
localtime
.
tm_mon
+
1
,
localtime
.
tm_mon
+
1
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment