Skip to content

Commit 6bc1b27

Browse files
committed
Fix frUpdateWorld() using an invalid value for the initial timestamp
1 parent e7fbb3b commit 6bc1b27

File tree

3 files changed

+18
-8
lines changed

3 files changed

+18
-8
lines changed

include/ferox.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ extern "C" {
8282
/* The major, minor, and the patch release version of this library. */
8383
#define FR_API_VERSION_MAJOR 0
8484
#define FR_API_VERSION_MINOR 9
85-
#define FR_API_VERSION_PATCH 6
85+
#define FR_API_VERSION_PATCH 7
8686

8787
/* The full version string of this library. */
8888
#define FR_API_VERSION \

src/external/ferox_utils.h

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,10 @@
7777
/* Releases the memory allocated for `arr`. */
7878
#define frReleaseDynArray(arr) \
7979
do { \
80-
free((arr).buffer); \
80+
free((arr).buffer); \
81+
\
82+
((arr).length) = 0; \
83+
((arr).capacity) = 0; \
8184
} while (0)
8285

8386
/* Returns the capacity of `arr`. */
@@ -118,12 +121,12 @@
118121
((arr).length = newLength)
119122

120123
/* Appends `newValue` at the end of `arr`. */
121-
#define frDynArrayPush(arr, newValue) \
122-
do { \
123-
if ((arr).length >= (arr).capacity) \
124-
frSetDynArrayCapacity((arr), ((arr).capacity << 1)); \
125-
\
126-
(arr).buffer[(arr).length] = (newValue), ++((arr).length); \
124+
#define frDynArrayPush(arr, newValue) \
125+
do { \
126+
if ((arr).length >= (arr).capacity) \
127+
frSetDynArrayCapacity((arr), ((arr).capacity << 1)); \
128+
\
129+
(arr).buffer[(arr).length] = (newValue), (arr).length++; \
127130
} while (0)
128131

129132
/* Swaps the `i`-th value and the `j`-th value of `arr`. */

src/world.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,13 @@ void frUpdateWorld(frWorld *w, float dt) {
269269
if (w == NULL || dt <= 0.0f) return;
270270

271271
float currentTime = frGetCurrentTime();
272+
273+
if (w->timestamp <= 0.0f) {
274+
w->timestamp = currentTime;
275+
276+
return;
277+
}
278+
272279
float elapsedTime = currentTime - w->timestamp;
273280

274281
w->timestamp = currentTime, w->accumulator += elapsedTime;

0 commit comments

Comments
 (0)