Comment 2 for bug 892788

Revision history for this message
zapman (zapman) wrote :

I sent a message to Carl Johnson who had provided the patch for Debian and he kindly replied with the solution. Should you need to contact him you can find the e-mail I used to contact him on the Debian bug report. His message follows:

"I finally think I found the problem. Could you please foreward some or
all of this to Ubuntu since I don't use it? Ubuntu should in turn send
this upstream to Debian. I haven't used zoo in years, so that is why I
hadn't already stumbled upon this.

It appears that Debian reformatted the patches and introduced a typo in
one part of my patch. The relevant part of the patch to _misc.c_ is
below:

+#ifdef LONG64
+ if ((int)(header->zoo_start = header->zoo_minus) != 0)
+#else
    if ((header->zoo_start + header->zoo_minus) != 0L)
+#endif

Notice the '=' in the ifdef case and '+' in the else case? If the '='
is changed to '+' in the first part it will then work. The other files
are all patched correctly, so this is the only change.

It appears that my original patch can be simplified somewhat, if anybody
wants to go to the trouble. I used '#ifdef LONG64', but cpp has a
built-in define of '__LP64__' (or '_LP64') that already specifies that
information. If that can be used, then the 'LONG64' define and
therefore the 'linux64' makefile target can be removed. I don't have a
32 bit machine to test this on, so I am not certain that there won't be
any problems. I just submitted a patch using this to FreeBSD at
http://www.freebsd.org/cgi/query-pr.cgi?pr=162804. That patch will
probably not be directly usable, since other patches probably change the
line numbers.

I hope this helps."