Skip to content

Instantly share code, notes, and snippets.

@shirok
Created August 25, 2011 10:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shirok/1170364 to your computer and use it in GitHub Desktop.
Save shirok/1170364 to your computer and use it in GitHub Desktop.
diff --git a/src/system.c b/src/system.c
index ba35faa..cb7a0eb 100644
--- a/src/system.c
+++ b/src/system.c
@@ -1071,9 +1071,11 @@ struct timespec *Scm_GetTimeSpec(ScmObj t, struct timespec *spec)
spec->tv_sec = ct->sec;
#endif /*!SCM_EMULATE_INT64*/
spec->tv_nsec = ct->nsec;
- if (SCM_EXACTP(t)) {
+ if (SCM_INTP(t)) {
spec->tv_sec += Scm_GetUInteger(t);
- } else if (SCM_FLONUMP(t)) {
+ } else if (!SCM_REALP(t)) {
+ Scm_Panic("implementation error: Scm_GetTimeSpec: something wrong");
+ } else {
double s;
spec->tv_nsec += (unsigned long)(modf(Scm_GetDouble(t), &s)*1.0e9);
spec->tv_sec += (unsigned long)s;
@@ -1081,8 +1083,6 @@ struct timespec *Scm_GetTimeSpec(ScmObj t, struct timespec *spec)
spec->tv_nsec -= 1000000000;
spec->tv_sec += 1;
}
- } else {
- Scm_Panic("implementation error: Scm_GetTimeSpec: something wrong");
}
}
return spec;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment