guix/gnu/packages/patches/procps-strtod-test.patch
Andreas Enge 098bd280f8
gnu: procps: Fix test failure on i686.
* gnu/packages/patches/procps-strtod-test.patch: New file.
* gnu/packages/linux.scm (procps): Add patch.
* gnu/local.mk (dist_patch_DATA): Register patch.
2023-03-20 16:59:27 +01:00

36 lines
1.1 KiB
Diff

See https://gitlab.com/procps-ng/procps/-/issues/271
diff -u -r procps-ng-4.0.3.alt/src/tests/test_strtod_nol.c procps-ng-4.0.3/src/tests/test_strtod_nol.c
--- procps-ng-4.0.3.alt/src/tests/test_strtod_nol.c 2022-12-18 23:44:18.383960834 +0100
+++ procps-ng-4.0.3/src/tests/test_strtod_nol.c 2023-03-20 16:52:26.680032658 +0100
@@ -1,6 +1,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <math.h>
#include "strutils.h"
struct strtod_tests {
@@ -25,6 +26,11 @@
{NULL, 0.0}
};
+#define EPSILON 1.0 // Really not trying for precision here
+int dequal(const double d1, const double d2)
+{
+ return fabs(d1-d2) < EPSILON;
+}
int main(int argc, char *argv[])
@@ -33,8 +39,8 @@
double val;
for(i=0; tests[i].string != NULL; i++) {
- if(strtod_nol_or_err(tests[i].string, "Cannot parse number") !=
- tests[i].result) {
+ if(!dequal (strtod_nol_or_err(tests[i].string, "Cannot parse number"),
+ tests[i].result)) {
fprintf(stderr, "FAIL: strtod_nol_or_err(\"%s\") != %f\n",
tests[i].string, tests[i].result);
return EXIT_FAILURE;