Ruby: missing/nan.c Source File

Ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c52d4d35cc6a173c89eda98ceffa2dcf)

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
6double
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