summaryrefslogtreecommitdiffstats
path: root/yaml-pr66.patch
blob: 160deaac13346444e32232fce0294ee905424854 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
From b3ba97abde6c503a305631649e8be01320078fb1 Mon Sep 17 00:00:00 2001
From: Remi Collet <remi@remirepo.net>
Date: Tue, 22 Feb 2022 11:57:38 +0100
Subject: [PATCH 1/2] Fix #65 yaml_parse_url method not working

---
 yaml.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/yaml.c b/yaml.c
index e06b145..4ca2cfe 100644
--- a/yaml.c
+++ b/yaml.c
@@ -474,7 +474,6 @@ PHP_FUNCTION(yaml_parse_url)
 
 	php_stream *stream = { 0 };
 	zend_string *input;
-	size_t size = 0;
 
 	parser_state_t state;
 	zval yaml;
@@ -514,7 +513,7 @@ PHP_FUNCTION(yaml_parse_url)
 	}
 
 	yaml_parser_initialize(&state.parser);
-	yaml_parser_set_input_string(&state.parser, (unsigned char *)input, size);
+	yaml_parser_set_input_string(&state.parser, (unsigned char *)ZSTR_VAL(input), ZSTR_LEN(input));
 
 	if (pos < 0) {
 		php_yaml_read_all(&state, &ndocs, &yaml TSRMLS_CC);
From 2cd4463594345a8c844a86c33e3539f5a44f3156 Mon Sep 17 00:00:00 2001
From: Remi Collet <remi@remirepo.net>
Date: Tue, 22 Feb 2022 12:03:54 +0100
Subject: [PATCH 2/2] add test for #65

---
 package.xml                   |  1 +
 tests/yaml_parse_url_001.phpt | 89 +++++++++++++++++++++++++++++++++++
 2 files changed, 90 insertions(+)
 create mode 100644 tests/yaml_parse_url_001.phpt

diff --git a/tests/yaml_parse_url_001.phpt b/tests/yaml_parse_url_001.phpt
new file mode 100644
index 0000000..7c5efc4
--- /dev/null
+++ b/tests/yaml_parse_url_001.phpt
@@ -0,0 +1,89 @@
+--TEST--
+yaml_parse_url - general
+--SKIPIF--
+<?php if(!extension_loaded('yaml')) die('skip yaml n/a'); ?>
+--INI--
+yaml.decode_timestamp=1
+date.timezone=GMT
+--FILE--
+<?php
+var_dump(yaml_parse_url('file://' . __DIR__ . '/yaml_parse_file_001.yaml'));
+?>
+--EXPECT--
+array(8) {
+  ["invoice"]=>
+  int(34843)
+  ["date"]=>
+  int(980208000)
+  ["bill-to"]=>
+  &array(3) {
+    ["given"]=>
+    string(5) "Chris"
+    ["family"]=>
+    string(6) "Dumars"
+    ["address"]=>
+    array(4) {
+      ["lines"]=>
+      string(27) "458 Walkman Dr.
+Suite #292
+"
+      ["city"]=>
+      string(9) "Royal Oak"
+      ["state"]=>
+      string(2) "MI"
+      ["postal"]=>
+      int(48046)
+    }
+  }
+  ["ship-to"]=>
+  &array(3) {
+    ["given"]=>
+    string(5) "Chris"
+    ["family"]=>
+    string(6) "Dumars"
+    ["address"]=>
+    array(4) {
+      ["lines"]=>
+      string(27) "458 Walkman Dr.
+Suite #292
+"
+      ["city"]=>
+      string(9) "Royal Oak"
+      ["state"]=>
+      string(2) "MI"
+      ["postal"]=>
+      int(48046)
+    }
+  }
+  ["product"]=>
+  array(2) {
+    [0]=>
+    array(4) {
+      ["sku"]=>
+      string(6) "BL394D"
+      ["quantity"]=>
+      int(4)
+      ["description"]=>
+      string(10) "Basketball"
+      ["price"]=>
+      float(450)
+    }
+    [1]=>
+    array(4) {
+      ["sku"]=>
+      string(7) "BL4438H"
+      ["quantity"]=>
+      int(1)
+      ["description"]=>
+      string(10) "Super Hoop"
+      ["price"]=>
+      float(2392)
+    }
+  }
+  ["tax"]=>
+  float(251.42)
+  ["total"]=>
+  float(4443.52)
+  ["comments"]=>
+  string(68) "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338."
+}