[Tickets #6625] imp/lib/SpellChecker/aspell.php test for ecode broken

bugs at horde.org bugs at horde.org
Fri Apr 18 21:11:59 UTC 2008


DO NOT REPLY TO THIS MESSAGE. THIS EMAIL ADDRESS IS NOT MONITORED.

Ticket URL: http://bugs.horde.org/ticket/6625
-----------------------------------------------------------------------
 Ticket             | 6625
 Created By         | liamr at umich.edu
 Summary            | imp/lib/SpellChecker/aspell.php test for ecode broken
 Queue              | IMP
 Version            | FRAMEWORK_3
 Type               | Bug
 State              | Unconfirmed
 Priority           | 1. Low
 Milestone          |
 Patch              |
 Owners             |
+New Attachment     | aspell.log
-----------------------------------------------------------------------


liamr at umich.edu (2008-04-18 17:11) wrote:

per http://marc.info/?l=imp&m=120853832309748&w=2

I think I've tracked the issue down.  IMP is looking for aspell to exit
with a code of "0" to decide whether the spellcheck works.

imp/lib/SpellChecker/aspell.php ~ ln 67:

        if (($ecode = proc_close($process)) != 0) {
            require_once 'PEAR.php';
            if ($this->_encoding) {
                $err = String::convertCharset($err, $this->_encoding,
$charset);
            }
            return PEAR::raiseError('spellcheck failed: ' . $err,
$ecode);
        }

proc_close() doesn't return results you think it's returning.  See...
  http://us2.php.net/manual/en/function.proc-close.php
  http://bugs.php.net/bug.php?id=17538

Apparently, it's especially faulty if you compiled php with
--enable-sigchild, which you're told to do if you're trying to use oracle
on linux.

The debugging stubs I placed in aspell.php clearly show that aspell is
being invoked, and is returning the expected output.  If I change..

   proc_close($process)) != 0

to look for -1, spellchecking works just dandy.





More information about the bugs mailing list