mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
add missing/nan.c
instead of scattering #ifdef HAVE_NANF here and there define our own nan() unless defined elsewhere. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61971 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
76b609c8c3
commit
782236e3bd
5 changed files with 31 additions and 22 deletions
28
missing/nan.c
Normal file
28
missing/nan.c
Normal file
|
@ -0,0 +1,28 @@
|
|||
#include "ruby/missing.h"
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
double
|
||||
nan(const char *spec)
|
||||
{
|
||||
#if 0
|
||||
/* FIXME: we have not yet seen any situation this is
|
||||
* necessary. Please write a proper implementation that
|
||||
* covers this branch. */
|
||||
if (spec && spec[0]) {
|
||||
double generated_nan;
|
||||
int len = snprintf(NULL, 0, "NAN(%s)", spec);
|
||||
char *buf = malloc(len + 1); /* +1 for NUL */
|
||||
sprintf(buf, "NAN(%s)", spec);
|
||||
generated_nan = strtod(buf, NULL);
|
||||
free(buf);
|
||||
return generated_nan;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
assert(!spec || !spec[0]);
|
||||
return (double)NAN;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue