Ruby
2.7.1p83(2020-03-31revisiona0c7c23c9cec0d0ffcba012279cd652d28ad5bf3)
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
}
strtod
#define strtod(s, e)
Definition:
util.h:76
assert
#define assert(x)
Definition:
dlmalloc.c:1176
sprintf
int sprintf(char *__restrict, const char *__restrict,...) __attribute__((__format__(__printf__
assert.h
NAN
#define NAN
Definition:
missing.h:156
NULL
#define NULL
Definition:
_sdbm.c:101
malloc
void * malloc(size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(1)))
buf
unsigned char buf[MIME_BUF_SIZE]
Definition:
nkf.c:4322
missing.h
snprintf
int snprintf(char *__restrict, size_t, const char *__restrict,...) __attribute__((__format__(__printf__
free
#define free(x)
Definition:
dln.c:52
nan
double nan(const char *spec)
Definition:
nan.c:7
len
uint8_t len
Definition:
escape.c:17
Generated by
1.8.17