[PECL-CVS] [pecl-text-xdiff] main: Release 2.2.0

[email protected] (Rasmus Lerdorf) Mon, 6 Apr 2026 09:50:18 +0000
Newsgroups php.pecl.cvs
Message-ID <[email protected]>
Author: Rasmus Lerdorf (rlerdorf)
Date: 2026-04-06T05:50:08-04:00

Commit: https://github.com/php/pecl-text-xdiff/commit/b0688374c58afcafa60cf681e2a12a46143da61e
Raw diff: https://github.com/php/pecl-text-xdiff/commit/b0688374c58afcafa60cf681e2a12a46143da61e.diff

Release 2.2.0

Changed paths:
  A  CHANGELOG.md
  A  composer.json
  M  package.xml
  M  php_xdiff.h


Diff:

diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..77544bd
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,71 @@
+# Version 2.2.0 - 2026-04-06
+
+- Fixed memory leak when $error parameter is refcounted in patch/merge functions (ranvis)
+- Fixed inverted return value in xdiff_file_bpatch() (returned true on failure)
+- Fixed missing error checks in xdiff_string_diff/bdiff/rabdiff()
+- Fixed potential double-free and size overflow in append_string()
+- Fixed unchecked php_stream_read() return in load_mm_file()
+- Fixed size truncation: use size_t consistently, add LONG_MAX bounds checks
+- Fixed signed/unsigned mismatches in callback functions
+- Added PIE support (composer.json)
+
+# Version 2.1.1 - 2022-05-24
+
+- Fixed bug #81552 xdiff_string_bpatch() and others missing (Kevin Israel)
+- Fixed bug #77826 xdiff_string_bpatch wrong return value on error (SATO Kentaro)
+
+# Version 2.1.0 - 2021-05-18
+
+- PHP 8 support
+- Drop PHP 5 support
+
+# Version 2.0.1 - 2016-05-17
+
+- Update License to PHP 3.1
+
+# Version 2.0.0 - 2015-11-23
+
+- PHP 7 Release
+
+# Version 1.5.1 - 2009-10-18
+
+- Fix for #16566
+
+# Version 1.5.0 - 2009-10-18
+
+- New functions added
+- Memory optimizations
+- Better handling of out of memory situations
+
+# Version 1.4.1 - 2008-07-01
+
+- Fixes for #7215, #7422 and #8227
+
+# Version 1.4 - 2005-11-14
+
+- Fixed bug #5064
+
+# Version 1.3 - 2005-05-09
+
+- Fix compile error
+
+# Version 1.2 - 2004-11-09
+
+- Fix libxdiff 0.9 crash
+- Force last parameters of xdiff_string_patch and xdiff_string_merge3 to be passed by reference
+
+# Version 1.1 - 2004-03-21
+
+- Fix FreeBSD build
+
+# Version 1.0 - 2004-02-09
+
+- Add support to memory_limit (libxdiff >= 0.6 required)
+
+# Version 0.3 - 2004-01-10
+
+- Win32 build fixes
+
+# Version 0.2 - 2004-01-08
+
+- Initial release
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..2ac2c15
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,19 @@
+{
+    "name": "pecl/xdiff",
+    "type": "php-ext",
+    "license": "PHP-3.01",
+    "description": "File differences/patches.",
+    "require": {
+        "php": ">=7.0.0"
+    },
+    "php-ext": {
+        "extension-name": "xdiff",
+        "configure-options": [
+            {
+                "name": "with-xdiff",
+                "description": "libxdiff library installation dir",
+                "needs-value": false
+            }
+        ]
+    }
+}
diff --git a/package.xml b/package.xml
index 5e608af..c0ec210 100644
--- a/package.xml
+++ b/package.xml
@@ -26,10 +26,10 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <email>[email protected]</email>
   <active>yes</active>
  </lead>
- <date>2022-05-24</date>
+ <date>2026-04-06</date>
  <version>
-  <release>2.1.1</release>
-  <api>2.1.0</api>
+  <release>2.2.0</release>
+  <api>2.2.0</api>
  </version>
  <stability>
   <release>stable</release>
@@ -37,8 +37,14 @@ http://pear.php.net/dtd/package-2.0.xsd">
  </stability>
  <license uri="http://www.php.net/license">PHP License</license>
  <notes>
-- Fixed bug #81552 xdiff_string_bpatch() and others missing (Kevin Israel)
-- Fixed bug #77826 xdiff_string_bpatch wrong return value on error (SATO Kentaro)
+- Fixed memory leak when $error parameter is refcounted in patch/merge functions
+- Fixed inverted return value in xdiff_file_bpatch() (returned true on failure)
+- Fixed missing error checks in xdiff_string_diff/bdiff/rabdiff()
+- Fixed potential double-free and size overflow in append_string()
+- Fixed unchecked php_stream_read() return in load_mm_file()
+- Fixed size truncation: use size_t consistently, add LONG_MAX bounds checks
+- Fixed signed/unsigned mismatches in callback functions
+- Added PIE support (composer.json)
  </notes>
  <contents>
   <dir name="/">
@@ -84,6 +90,7 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <file name="error-bpatch.phpt" role="test" />
     <file name="error-patch.phpt" role="test" />
     <file name="error-patch2.phpt" role="test" />
+    <file name="file_bpatch_retval.phpt" role="test" />
     <file name="file.1" role="test" />
     <file name="file.2" role="test" />
     <file name="file.bdiff" role="test" />
@@ -108,6 +115,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
    <file name="README.API" role="doc" />
    <file name="xdiff.c" role="src" />
    <file name="xdiff_arginfo.h" role="src" />
+   <file name="xdiff.stub.php" role="src" />
+   <file name="composer.json" role="src" />
   </dir> <!-- / -->
  </contents>
  <dependencies>
@@ -125,6 +134,22 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <configureoption default="autodetect" name="with-xdiff" prompt="libxdiff library installation dir?" />
  </extsrcrelease>
  <changelog>
+  <release>
+   <date>2022-05-24</date>
+   <version>
+    <release>2.1.1</release>
+    <api>2.1.0</api>
+   </version>
+   <stability>
+    <release>stable</release>
+    <api>stable</api>
+   </stability>
+   <license uri="http://www.php.net/license">PHP License</license>
+   <notes>
+- Fixed bug #81552 xdiff_string_bpatch() and others missing (Kevin Israel)
+- Fixed bug #77826 xdiff_string_bpatch wrong return value on error (SATO Kentaro)
+   </notes>
+  </release>
   <release>
    <date>2021-05-18</date>
    <version>
diff --git a/php_xdiff.h b/php_xdiff.h
index 2a1f469..e7b869e 100644
--- a/php_xdiff.h
+++ b/php_xdiff.h
@@ -22,7 +22,7 @@
 extern zend_module_entry xdiff_module_entry;
 #define phpext_xdiff_ptr &xdiff_module_entry
 
-#define PHP_XDIFF_VERSION "2.1.1"
+#define PHP_XDIFF_VERSION "2.2.0"
 
 #ifdef PHP_WIN32
 #define PHP_XDIFF_API __declspec(dllexport)