[rtems commit] rtems: Justify integer conversions

Sebastian Huber sebh at rtems.org
Thu Sep 30 05:27:40 UTC 2021


Module:    rtems
Branch:    master
Commit:    abda5595f89e3a02d5c99ca5c44b170f1c49d1e5
Changeset: http://git.rtems.org/rtems/commit/?id=abda5595f89e3a02d5c99ca5c44b170f1c49d1e5

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Wed Sep 29 15:23:24 2021 +0200

rtems: Justify integer conversions

Close #2548.

---

 cpukit/rtems/src/clockgettod.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/cpukit/rtems/src/clockgettod.c b/cpukit/rtems/src/clockgettod.c
index 5058b42..01daa3d 100644
--- a/cpukit/rtems/src/clockgettod.c
+++ b/cpukit/rtems/src/clockgettod.c
@@ -100,9 +100,14 @@ rtems_status_code rtems_clock_get_tod(
   /* Obtain the current time */
   _TOD_Get_timeval( &now );
 
-  /* How many days and how many seconds in the day ? */
-  days = now.tv_sec / RTEMS_SECS_PER_DAY;
-  day_secs = now.tv_sec % RTEMS_SECS_PER_DAY;
+  /*
+   * How many days and how many seconds in the day?
+   *
+   * A 32-bit integer can represent enough days for several 1000 years.  When
+   * the current time is valid, the integer conversions below are well defined.
+   */
+  days = (uint32_t) ( now.tv_sec / RTEMS_SECS_PER_DAY );
+  day_secs = (uint32_t) ( now.tv_sec % RTEMS_SECS_PER_DAY );
 
   /* How many non-leap year years ? */
   year = ( days / RTEMS_DAYS_PER_YEAR ) + RTEMS_YEAR_BASE;



More information about the vc mailing list