This is an automated email from the ASF dual-hosted git repository.

pnoltes pushed a commit to branch feature/scheduled_event_on_event_thread
in repository https://gitbox.apache.org/repos/asf/celix.git

commit 34a65c06b6914d81948c76d80b7b4f948a9a691c
Author: Pepijn Noltes <[email protected]>
AuthorDate: Thu Jun 15 20:00:15 2023 +0200

    Fix issue in celix_addDelayInSecondsToTime
---
 bundles/remote_services/topology_manager/tms_tst/CMakeLists.txt | 1 +
 libs/utils/gtest/src/TimeUtilsTestSuite.cc                      | 7 +++++++
 libs/utils/src/utils.c                                          | 4 ++--
 3 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/bundles/remote_services/topology_manager/tms_tst/CMakeLists.txt 
b/bundles/remote_services/topology_manager/tms_tst/CMakeLists.txt
index 64b420ec..b909f71b 100644
--- a/bundles/remote_services/topology_manager/tms_tst/CMakeLists.txt
+++ b/bundles/remote_services/topology_manager/tms_tst/CMakeLists.txt
@@ -41,6 +41,7 @@ target_link_libraries(test_tm_scoped PRIVATE
         jansson::jansson
         calculator_api
         Celix::rsa_common
+        civetweb::civetweb
 )
 
 add_celix_bundle_dependencies(test_tm_scoped Celix::rsa_dfi 
Celix::rsa_topology_manager calculator topology_manager_disc_mock_bundle 
topology_manager_test_bundle)
diff --git a/libs/utils/gtest/src/TimeUtilsTestSuite.cc 
b/libs/utils/gtest/src/TimeUtilsTestSuite.cc
index 303191eb..f0f26198 100644
--- a/libs/utils/gtest/src/TimeUtilsTestSuite.cc
+++ b/libs/utils/gtest/src/TimeUtilsTestSuite.cc
@@ -102,4 +102,11 @@ TEST_F(TimeUtilsTestSuite, AddDelayInSecondsToTimeTest) {
     expectedTime = {-1, 0};
     ASSERT_EQ(delayedTime.tv_sec, expectedTime.tv_sec);
     ASSERT_EQ(delayedTime.tv_nsec, expectedTime.tv_nsec);
+
+    //Test delay <= -2 seconds
+    time = {3, 0};
+    delayedTime = celix_addDelayInSecondsToTime(&time, -2.6);
+    expectedTime = {0, 400000000};
+    ASSERT_EQ(delayedTime.tv_sec, expectedTime.tv_sec);
+    ASSERT_EQ(delayedTime.tv_nsec, expectedTime.tv_nsec);
 }
diff --git a/libs/utils/src/utils.c b/libs/utils/src/utils.c
index 499d8ada..905ca301 100644
--- a/libs/utils/src/utils.c
+++ b/libs/utils/src/utils.c
@@ -276,9 +276,9 @@ struct timespec celix_addDelayInSecondsToTime(const struct 
timespec* time, doubl
     }
 
     long seconds = (long)delayInSeconds;
-    long nanoseconds = (long)((delayInSeconds - floor(delayInSeconds)) * 
CELIX_NS_IN_SEC);
+    double nanoseconds = (delayInSeconds - (double)seconds) * CELIX_NS_IN_SEC;
     delayedTime.tv_sec += seconds;
-    delayedTime.tv_nsec += nanoseconds;
+    delayedTime.tv_nsec += (long)nanoseconds;
 
     if (delayedTime.tv_nsec >= CELIX_NS_IN_SEC) {
         delayedTime.tv_sec += 1;

Reply via email to