* gnu/packages/patches/procps-strtod-test.patch: New file. * gnu/packages/linux.scm (procps): Add patch. * gnu/local.mk (dist_patch_DATA): Register patch.
		
			
				
	
	
		
			36 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			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;
 |