Development

#2803 ([PATCH] On Windows, there is warning issued during plugin-install and plugin-uninstall)

You must first sign up to be able to contribute.

Ticket #2803 (closed defect: invalid)

Opened 1 year ago

Last modified 1 year ago

[PATCH] On Windows, there is warning issued during plugin-install and plugin-uninstall

Reported by: develop7 Assigned to: fabien
Priority: minor Milestone: 1.0.12
Component: tasks Version: 1.0.10
Keywords: patch split windows Cc:
Qualification: Unreviewed

Description

I've did symfony plugin-install http://plugins.symfony-project.com/sfPropelActAsRatableBehaviorPlugin in new project directory and got following:

>> pear      channel://pear.symfony-project....ctAsRatableBehaviorPlugin-0.7.1
>> plugin    installing web data for plugin
PHP Warning:  split(): REG_EESCAPE in E:\PHP\PEAR\data\symfony\tasks\sfPakePlugins.php on line 293
PHP Stack trace:
PHP   1. {main}() C:\Projects\qwe\symfony:0
PHP   2. include() C:\Projects\qwe\symfony:14
PHP   3. pakeApp->run() E:\PHP\PEAR\data\symfony\bin\symfony.php:174
PHP   4. pakeTask->invoke() E:\PHP\PEAR\symfony\vendor\pake\pakeApp.class.php:175
PHP   5. pakeTask->execute() E:\PHP\PEAR\symfony\vendor\pake\pakeTask.class.php:181
PHP   6. call_user_func_array() E:\PHP\PEAR\symfony\vendor\pake\pakeTask.class.php:218
PHP   7. run_plugin_install() E:\PHP\PEAR\symfony\vendor\pake\pakeTask.class.php:0
PHP   8. _install_web_content() E:\PHP\PEAR\data\symfony\tasks\sfPakePlugins.php:43
PHP   9. _absolute_path_difference() E:\PHP\PEAR\data\symfony\tasks\sfPakePlugins.php:261
PHP  10. split() E:\PHP\PEAR\data\symfony\tasks\sfPakePlugins.php:293

Warning: split(): REG_EESCAPE in E:\PHP\PEAR\data\symfony\tasks\sfPakePlugins.php on line 293

Call Stack:
    0.0007      51856   1. {main}() C:\Projects\qwe\symfony:0
    0.0052     112056   2. include('E:\PHP\PEAR\data\symfony\bin\symfony.php') C:\Projects\qwe\symfony:14
    0.1539    2086816   3. pakeApp->run() E:\PHP\PEAR\data\symfony\bin\symfony.php:174
    0.1685    2201984   4. pakeTask->invoke() E:\PHP\PEAR\symfony\vendor\pake\pakeApp.class.php:175
    0.1725    2202992   5. pakeTask->execute() E:\PHP\PEAR\symfony\vendor\pake\pakeTask.class.php:181
    0.1726    2204104   6. call_user_func_array() E:\PHP\PEAR\symfony\vendor\pake\pakeTask.class.php:218
    0.1726    2204104   7. run_plugin_install() E:\PHP\PEAR\symfony\vendor\pake\pakeTask.class.php:0
    8.9647   11818976   8. _install_web_content() E:\PHP\PEAR\data\symfony\tasks\sfPakePlugins.php:43
    8.9670   11819488   9. _absolute_path_difference() E:\PHP\PEAR\data\symfony\tasks\sfPakePlugins.php:261
    8.9963   11944384  10. split() E:\PHP\PEAR\data\symfony\tasks\sfPakePlugins.php:293

PHP Warning:  split(): REG_EESCAPE in E:\PHP\PEAR\data\symfony\tasks\sfPakePlugins.php on line 294
PHP Stack trace:
PHP   1. {main}() C:\Projects\qwe\symfony:0
PHP   2. include() C:\Projects\qwe\symfony:14
PHP   3. pakeApp->run() E:\PHP\PEAR\data\symfony\bin\symfony.php:174
PHP   4. pakeTask->invoke() E:\PHP\PEAR\symfony\vendor\pake\pakeApp.class.php:175
PHP   5. pakeTask->execute() E:\PHP\PEAR\symfony\vendor\pake\pakeTask.class.php:181
PHP   6. call_user_func_array() E:\PHP\PEAR\symfony\vendor\pake\pakeTask.class.php:218
PHP   7. run_plugin_install() E:\PHP\PEAR\symfony\vendor\pake\pakeTask.class.php:0
PHP   8. _install_web_content() E:\PHP\PEAR\data\symfony\tasks\sfPakePlugins.php:43
PHP   9. _absolute_path_difference() E:\PHP\PEAR\data\symfony\tasks\sfPakePlugins.php:261
PHP  10. split() E:\PHP\PEAR\data\symfony\tasks\sfPakePlugins.php:294

Warning: split(): REG_EESCAPE in E:\PHP\PEAR\data\symfony\tasks\sfPakePlugins.php on line 294

Call Stack:
    0.0007      51856   1. {main}() C:\Projects\qwe\symfony:0
    0.0052     112056   2. include('E:\PHP\PEAR\data\symfony\bin\symfony.php') C:\Projects\qwe\symfony:14
    0.1539    2086816   3. pakeApp->run() E:\PHP\PEAR\data\symfony\bin\symfony.php:174
    0.1685    2201984   4. pakeTask->invoke() E:\PHP\PEAR\symfony\vendor\pake\pakeApp.class.php:175
    0.1725    2202992   5. pakeTask->execute() E:\PHP\PEAR\symfony\vendor\pake\pakeTask.class.php:181
    0.1726    2204104   6. call_user_func_array() E:\PHP\PEAR\symfony\vendor\pake\pakeTask.class.php:218
    0.1726    2204104   7. run_plugin_install() E:\PHP\PEAR\symfony\vendor\pake\pakeTask.class.php:0
    8.9647   11818976   8. _install_web_content() E:\PHP\PEAR\data\symfony\tasks\sfPakePlugins.php:43
    8.9670   11819488   9. _absolute_path_difference() E:\PHP\PEAR\data\symfony\tasks\sfPakePlugins.php:261
    9.1453   11944416  10. split() E:\PHP\PEAR\data\symfony\tasks\sfPakePlugins.php:294

Well, I've looked into split.c from php source and found that this function uses treats first argument as regexp, while explode does not. Moreover, looks like that it is normal behavior for split (and such call actually does not split nothing, that could possibly break some paths), so I've just replaced its call with explode call. Appropriate patch is included.

--- data\symfony\tasks\sfPakePlugins.old.php    Sat Dec 22 10:03:36 2007
+++ data\symfony\tasks\sfPakePlugins.php        Thu Jan 17 16:41:03 2008
@@ -288,12 +288,12 @@
   {

     return $target;
   }

-  $source = split(DIRECTORY_SEPARATOR, rtrim($source, DIRECTORY_SEPARATOR));
-  $target = split(DIRECTORY_SEPARATOR, rtrim($target, DIRECTORY_SEPARATOR));
+  $source = explode(DIRECTORY_SEPARATOR, rtrim($source, DIRECTORY_SEPARATOR));
+  $target = explode(DIRECTORY_SEPARATOR, rtrim($target, DIRECTORY_SEPARATOR));

   if ($source == $target)
   {
     return '.';
   }

Attachments

sfPakePlugins.patch (0.6 kB) - added by develop7 on 01/17/08 16:16:52.

Change History

01/17/08 16:16:52 changed by develop7

  • attachment sfPakePlugins.patch added.

01/23/08 18:46:39 changed by develop7

  • status changed from new to closed.
  • resolution set to invalid.
  • qualification changed from Unreviewed to Patch rejected, quality issue.

01/23/08 20:06:06 changed by Markus.Staab

  • qualification changed from Patch rejected, quality issue to Unreviewed.

duplicat of #2609

03/20/08 18:25:47 changed by noel

  • milestone set to 1.0.12.

The Sensio Labs Network

Since 1998, Sensio Labs has been promoting the Open-Source software movement by providing quality web application development, training, consulting, and supporting several large Open-Source projects.