preg_replace_callback() is segfaulting in 4.4.4, length related?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Stephen Kay

    preg_replace_callback() is segfaulting in 4.4.4, length related?

    I'm having a problem where I changed hosts, went from php 4.1.2 to php
    4.4.4, and now preg_replace_ca llback() is segfaulting when I pass it html
    that is longer than 2732 bytes. This code has worked for a long time on a
    different server.

    Basically, I am reading an html page template into a variable with fread().

    I then am doing this, which is code taken from a user example on the eval()
    php manual page, which I have used successfully for quite awhile:

    What it does is evaluate mixed html and php code, and output to browser. You
    call it like:

    eval_mixed($str ing);

    function eval_mixed_help er($arr){
    return ("echo stripslashes(\" ".addslashes($a rr[1])."\");");
    }

    function eval_mixed($str ing){

    $string = "<? ?>".$string."< ? ?>";
    $string = preg_replace("/<\?=\s+(.*?)\s+ \?>/", "<? echo $1; ?>",
    $string);
    $string = str_replace('?> ', '', str_replace( array('<?php', '<?'),
    '', preg_replace_ca llback( "/\?>((.|\n)*?)<\ ?(php)?/", "eval_mixed_hel per",
    $string) ) );

    return eval($string);
    }

    If the template that I read into $string is 2732 or less bytes, it works
    like it always did. If it is 2733 or greater bytes, it segment faults.

    I found this report in the bug database, but it's really old. It sounds like
    the same thing, though:


    BugĀ #25754 preg_replace() and preg_replace_ca llback() crash with long
    matches

    Anybody know anything about this?

    Again, it worked fine on the older php on a different server.
    I don't really know what to do to proceed with this, it's a bit out of my
    league.

    Any advice would be greatly appreciated!

    --
    Stephen Kay
    Karma-Lab sk@karma-lab.NOSPAM.com
    ^^^^^^^


Working...