$OpenBSD: patch-ext_psych_yaml_loader_c,v 1.1 2017/09/16 22:52:40 jeremy Exp $

Index: ext/psych/yaml/loader.c
--- ext/psych/yaml/loader.c.orig
+++ ext/psych/yaml/loader.c
@@ -239,8 +239,8 @@ yaml_parser_register_anchor(yaml_parser_t *parser,
         if (strcmp((char *)alias_data->anchor, (char *)anchor) == 0) {
             yaml_free(anchor);
             return yaml_parser_set_composer_error_context(parser,
-                    "found duplicate anchor; first occurence",
-                    alias_data->mark, "second occurence", data.mark);
+                    "found duplicate anchor; first occurrence",
+                    alias_data->mark, "second occurrence", data.mark);
         }
     }
 
@@ -283,7 +283,6 @@ static int
 yaml_parser_load_scalar(yaml_parser_t *parser, yaml_event_t *first_event)
 {
     yaml_node_t node;
-    ptrdiff_t node_index;
     int index;
     yaml_char_t *tag = first_event->data.scalar.tag;
 
@@ -301,11 +300,7 @@ yaml_parser_load_scalar(yaml_parser_t *parser, yaml_ev
 
     if (!PUSH(parser, parser->document->nodes, node)) goto error;
 
-    node_index = parser->document->nodes.top - parser->document->nodes.start;
-#if PTRDIFF_MAX > INT_MAX
-    if (node_index > INT_MAX) goto error;
-#endif
-    index = (int)node_index;
+    index = parser->document->nodes.top - parser->document->nodes.start;
 
     if (!yaml_parser_register_anchor(parser, index,
                 first_event->data.scalar.anchor)) return 0;
@@ -334,7 +329,6 @@ yaml_parser_load_sequence(yaml_parser_t *parser, yaml_
         yaml_node_item_t *top;
     } items = { NULL, NULL, NULL };
     int index, item_index;
-    ptrdiff_t node_index;
     yaml_char_t *tag = first_event->data.sequence_start.tag;
 
     if (!STACK_LIMIT(parser, parser->document->nodes, INT_MAX-1)) goto error;
@@ -353,11 +347,7 @@ yaml_parser_load_sequence(yaml_parser_t *parser, yaml_
 
     if (!PUSH(parser, parser->document->nodes, node)) goto error;
 
-    node_index = parser->document->nodes.top - parser->document->nodes.start;
-#if PTRDIFF_MAX > INT_MAX
-    if (node_index > INT_MAX) goto error;
-#endif
-    index = (int)node_index;
+    index = parser->document->nodes.top - parser->document->nodes.start;
 
     if (!yaml_parser_register_anchor(parser, index,
                 first_event->data.sequence_start.anchor)) return 0;
@@ -401,7 +391,6 @@ yaml_parser_load_mapping(yaml_parser_t *parser, yaml_e
         yaml_node_pair_t *top;
     } pairs = { NULL, NULL, NULL };
     int index;
-    ptrdiff_t node_index;
     yaml_node_pair_t pair;
     yaml_char_t *tag = first_event->data.mapping_start.tag;
 
@@ -421,11 +410,7 @@ yaml_parser_load_mapping(yaml_parser_t *parser, yaml_e
 
     if (!PUSH(parser, parser->document->nodes, node)) goto error;
 
-    node_index = parser->document->nodes.top - parser->document->nodes.start;
-#if PTRDIFF_MAX > INT_MAX
-    if (node_index > INT_MAX) goto error;
-#endif
-    index = (int)node_index;
+    index = parser->document->nodes.top - parser->document->nodes.start;
 
     if (!yaml_parser_register_anchor(parser, index,
                 first_event->data.mapping_start.anchor)) return 0;
