Fix obscure bug
authoreileen <emcnaughton@wikimedia.org>
Tue, 4 Feb 2020 07:26:58 +0000 (20:26 +1300)
committereileen <emcnaughton@wikimedia.org>
Tue, 4 Feb 2020 07:27:01 +0000 (20:27 +1300)
After upgrading to MacOS Catalina & MAMP 5.6 (latest) with php version 7.4.1 or 7.3.9
my site was unable to load CiviCRM with a segfault error. I traced it to this line & found that
phpstorm was highlighting the line it red as possibly subject to https://bugs.php.net/bug.php?id=62577

- taking phpstorm's recommendation allowed the site to load - the failure had been on parsing info.xml files

CRM/Utils/XML.php

index 278ca494c3afb963c41af31d416aaad41c815c27..47619c1c6a5a13eca6554b2e2389a744adadf97e 100644 (file)
@@ -36,9 +36,10 @@ class CRM_Utils_XML {
       $oldLibXMLErrors = libxml_use_internal_errors();
       libxml_use_internal_errors(TRUE);
 
-      $xml = simplexml_load_file($file,
-        'SimpleXMLElement', LIBXML_NOCDATA
-      );
+      // Note that under obscure circumstances calling simplexml_load_file
+      // hit https://bugs.php.net/bug.php?id=62577
+      $string = file_get_contents($file);
+      $xml = simplexml_load_string($string, 'SimpleXMLElement', LIBXML_NOCDATA);
       if ($xml === FALSE) {
         $error = self::formatErrors(libxml_get_errors());
       }