[pacman-dev] vercmp discussion (was: String freeze for 3.2 release)

Xavier shiningxc at gmail.com
Mon Jul 21 08:05:04 EDT 2008

On Mon, Jul 21, 2008 at 12:01 PM, Xavier <shiningxc at gmail.com> wrote:
> On Mon, Jul 21, 2008 at 11:25 AM, Xavier <shiningxc at gmail.com> wrote:
>> Apparently the static strings were a show stopper to Dan.
>> I don't have a problem with static strings, since it removes the
>> malloc/free overhead and also simplifies the code.
>> As always with dynamic strings, we have the choice between duplicating
>> all free calls, or using goto.
>> But anyway, here is a new patch using strdup/free instead of static arrays.
> This breaks sync1000, sync1003 and upgrade075 pactest, but I have not
> yet been able to figure out why.

Well I found a fix, which looks correct to me, but I am still highly
confused about why the old vercmp function with static strings worked
Also, my vercmp function had problems when being called from checkdeps
(which is why it broke the 3 pactests above), and probably the two
arguments of vercmp in this case are dynamic strings.
But it didn't have any problems when being called from the vercmp tool
(src/util/vercmp) which use static strings, because all tests in
pactest/vercmptest still passed fine.

Anyway, after the fix, the calls from checkdeps and vercmp tool both work fine.

diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c
index d0ca58a..8a36e56 100644
--- a/lib/libalpm/package.c
+++ b/lib/libalpm/package.c
@@ -593,12 +593,12 @@ int SYMEXPORT alpm_pkg_vercmp(const char *a,
const char *b)

        /* lose the release number */
        for(one = str1; *one && *one != '-'; one++);
-       if(one) {
+       if(*one) {
                *one = '\0';
                rel1 = ++one;
        for(two = str2; *two && *two != '-'; two++);
-       if(two) {
+       if(*two) {
                *two = '\0';
                rel2 = ++two;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Revert-vercmp-code-to-the-old-version.patch
Type: application/mbox
Size: 8722 bytes
Desc: not available
URL: <http://archlinux.org/pipermail/pacman-dev/attachments/20080721/1efe089b/attachment.bin>

More information about the pacman-dev mailing list