Menu.inc on line 974

the do {}while() causes an error if $parent is empty because strrpos, (I have mbstring enabled) may be null
to fix my problem I have this if statement wrapping it, which I understand is logically equivlent to just doing a while loop.

      if ($parent){
       do {
         $parent = substr($parent, 0, strrpos($parent, '/'));
       }
       while ($parent && !array_key_exists($parent, $_menu['path index']));
      }

This happens just after a new install.

CommentFileSizeAuthor
#1 menu.inc_0.patch908 bytesrobin monks

Comments

robin monks’s picture

Version: 4.6.0 »
Assigned: Unassigned » robin monks
StatusFileSize
new908 bytes

We apparently don't check if the object exists before we work on it.

Robin

dries’s picture

I wonder how I can reproduce this problem. Maybe we are fixing the symptom, not the cause.

mark.stephens’s picture

I was having this problem with a clean install of drupal 4.6.0. I had mbstrings enabled in PHP. I turned it off, and the problem went away immediately. Within mbstrings, I had:

mbstring.language = English
mbstring.internal_encoding = UTF-8
mbstring.http_output = auto
mbstring.func_overload = 7

PHP 4.3.11.

Mark

robin monks’s picture

Hmm, seems odd.

Since I don't use MBstring it become harder for me to understand the problem. All I know, is my patch dosn't break anything and should be there anyways, in case my some miracle we attempt to work on a non-existant object.

Robin

Steven’s picture

Status: Needs review » Closed (works as designed)

As of recently, HEAD supports mbstring, but function overloading is explicitly unsupported. Marking as 'by design'.