]> andersk Git - libyaml.git/commitdiff
Remove need for PTRDIFF_MAX
authorRoger Peppe <rogpeppe@gmail.com>
Mon, 8 Jan 2018 18:47:02 +0000 (18:47 +0000)
committerIngy döt Net <ingy@ingy.net>
Thu, 11 Jan 2018 17:36:31 +0000 (09:36 -0800)
It's just as easy to calculate the maximum value directly.

src/reader.c
src/yaml_private.h

index f1a06deb9d3a5b3affa55dbe29119898eab6d471..f3ac54c2517dd06a0dffc81c4a93c30619dde631 100644 (file)
@@ -460,10 +460,10 @@ yaml_parser_update_buffer(yaml_parser_t *parser, size_t length)
 
     }
 
-    if (parser->offset >= PTRDIFF_MAX)
+    if (parser->offset >= MAX_FILE_SIZE) {
         return yaml_parser_set_reader_error(parser, "input is too long",
-                PTRDIFF_MAX, -1);
+            parser->offset, -1);
+    }
 
     return 1;
 }
-
index fe25141de2af6c6aaf7c1d5a6650c5d42c7eb905..eb722077dfc01d72883c228883749ea72463bb2c 100644 (file)
@@ -8,28 +8,6 @@
 #include <limits.h>
 #include <stddef.h>
 
-#ifndef _MSC_VER
-#if defined(__sun) || defined(__sun__)
-#include <sys/inttypes.h>
-#define PTRDIFF_MAX INT_MAX
-#else
-#include <stdint.h>
-#ifndef PTRDIFF_MAX /* gcc on HP-UX */
-#ifdef _LP64
-#define PTRDIFF_MAX 0x7FFFFFFFFFFFFFFFLL
-#else
-#define PTRDIFF_MAX 0x7FFFFFFFL
-#endif
-#endif
-#endif
-#else
-#ifdef _WIN64
-#define PTRDIFF_MAX _I64_MAX
-#else
-#define PTRDIFF_MAX INT_MAX
-#endif
-#endif
-
 /*
  * Memory management.
  */
@@ -88,6 +66,17 @@ yaml_parser_fetch_more_tokens(yaml_parser_t *parser);
 
 #define OUTPUT_RAW_BUFFER_SIZE  (OUTPUT_BUFFER_SIZE*2+2)
 
+/*
+ * The maximum size of a YAML input file.
+ * This used to be PTRDIFF_MAX, but that's not entirely portable
+ * because stdint.h isn't available on all platforms.
+ * It is not entirely clear why this isn't the maximum value
+ * that can fit into the parser->offset field.
+ */
+
+#define MAX_FILE_SIZE (~(size_t)0 / 2)
+
+
 /*
  * The size of other stacks and queues.
  */
This page took 0.036013 seconds and 5 git commands to generate.