Ruby
3.0.5p211 (2022-11-24 revision ba5cf0f7c52d4d35cc6a173c89eda98ceffa2dcf)
missing
nan.c
Go to the documentation of this file.
1
#include "
ruby/missing.h
"
2
#include <
assert.h
>
3
#include <stdlib.h>
4
#include <string.h>
5
6
double
7
nan
(
const
char
*spec)
8
{
9
#if 0
10
/* FIXME: we have not yet seen any situation this is
11
* necessary. Please write a proper implementation that
12
* covers this branch. */
13
if
(spec && spec[0]) {
14
double
generated_nan;
15
int
len
=
snprintf
(
NULL
, 0,
"NAN(%s)"
, spec);
16
char
*
buf
=
malloc
(
len
+ 1);
/* +1 for NUL */
17
sprintf(
buf
,
"NAN(%s)"
, spec);
18
generated_nan =
strtod
(
buf
,
NULL
);
19
free
(
buf
);
20
return
generated_nan;
21
}
22
else
23
#endif
24
{
25
assert
(!spec || !spec[0]);
26
return
(
double
)
NAN
;
27
}
28
}
assert.h
assert
#define assert(x)
Definition:
dlmalloc.c:1176
free
#define free(x)
Definition:
dln.c:52
len
uint8_t len
Definition:
escape.c:17
missing.h
Prototype for *.c in ./missing, and for missing timeval struct.
NAN
#define NAN
Definition:
missing.h:151
strtod
#define strtod(s, e)
Definition:
util.h:45
buf
voidpf void * buf
Definition:
ioapi.h:138
nan
double nan(const char *spec)
Definition:
nan.c:7
NULL
#define NULL
Definition:
regenc.h:69
malloc
#define malloc
Definition:
st.c:170
snprintf
#define snprintf
Definition:
subst.h:14
Generated by
1.9.5