[imp] email page with 'loading' for ever on Horde webmail 5.0.2

Eric Van Bocxlaer evb at ping.be
Mon Dec 17 18:49:35 UTC 2012


Ralf Lang <lang <at> b1-systems.de> writes:

> 
> > Found something in the php log file:
> > [14-Dec-2012 22:25:32 UTC] PHP Fatal error:  Call to a member function 
rewind
> > () on a non-object in C:\php\pear\Horde\Imap\Client\Socket.php on line 2878
> > 
> > Is a non-object in php the same as a null?
> > It seems not, because just before line 2878 there is following test:
> >         if (is_null($data)) {
> >             return $params;
> >         }
> > 
> 
> A non-object is anything but an object, including null, integer,
> strings, resources and arrays.
> 
> --
> Ralf Lang
> Linux Consultant / Developer
> Tel.: +49-170-6381563
> Mail: lang <at> b1-systems.de
> 
> B1 Systems GmbH Osterfeldstraße 7 / 85088 Vohburg /
> http://www.b1-systems.de
> GF: Ralph Dehner / Unternehmenssitz: Vohburg / AG: Ingolstadt,HRB 3537
> 

Ok, it's like a class object in other languages.
The error occurs in C:\php\pear\Horde\Imap\Client\Socket.php 
    /**
     * Helper function to parse a parameters-like tokenized array.
     * @param mixed $data   Message data. Either a Horde_Imap_Client_Tokenize
     *                      object or null.
     * @param string $type  The header name.
     * @return array  The parameter array.
     */
    protected function _parseStructureParams($data, $type)
    {
        $params = array();
        if (is_null($data)) {
            return $params;
        }
	$name = $data->rewind();
	do {
		$params[strtolower($name)] = $data->next();
	} while (($name = $data->next()) !== false);
	$ret = Horde_Mime::decodeParam($type, $params);
	return $ret['params'];
    }

The $data entering the method is sometimes not an object, causing the php 
fatal error.
The only place I see in socket.php where it is possible to enter the method 
with something not an object is at line 2845

   // This is disposition information
   if (is_object($tmp = $data->next())) {
       $ob->setDisposition($tmp->rewind());

       foreach ($this->_parseStructureParams($tmp->next(), 'content-
disposition') as $key => $val) {
                $ob->setDispositionParameter($key, $val);
            }
   }

$tmp->next() is not protected by a 'is_ojbect'
Correct?

Eric



More information about the imp mailing list