]> git.pld-linux.org Git - packages/rpm.git/blobdiff - rpm-fast-alAddPackage.patch
- internal file update (for compatibility with *.mgc generated by file-4.14)
[packages/rpm.git] / rpm-fast-alAddPackage.patch
index 041df8bd6e0d672019396be6674771234f4c9a20..3614cf3456d2ecc1fe3253255d58d92966eb0ec8 100644 (file)
@@ -1,11 +1,11 @@
---- ./lib/depends.c.org        Sat Jun 16 14:14:11 2001
-+++ ./lib/depends.c    Sat Jun 16 14:19:12 2001
-@@ -335,18 +335,19 @@
+--- rpm-4.0.4/lib/depends.c~org        Wed Aug  1 22:14:31 2001
++++ rpm-4.0.4/lib/depends.c    Wed Aug  1 22:15:57 2001
+@@ -335,18 +335,24 @@
        for (dirNum = 0; dirNum < numDirs; dirNum++) {
            dirNeedle.dirName = (char *) dirNames[dirNum];
            dirNeedle.dirNameLen = strlen(dirNames[dirNum]);
 -          dirMatch = bsearch(&dirNeedle, al->dirs, origNumDirs,
-+          dirMatch = bsearchnl(&dirNeedle, al->dirs, origNumDirs,
++          dirMatch = bsearchnl(&dirNeedle, al->dirs, al->numDirs,
                               sizeof(dirNeedle), dirInfoCompare);
 -          if (dirMatch) {
 -              dirMapping[dirNum] = dirMatch - al->dirs;
@@ -15,7 +15,9 @@
 -              al->dirs[al->numDirs].dirNameLen = strlen(dirNames[dirNum]);
 -              al->dirs[al->numDirs].files = NULL;
 -              al->dirs[al->numDirs].numFiles = 0;
-+          if (dirInfoCompare(dirMatch, &dirNeedle)!=0) {
++          if (dirMatch==NULL || dirInfoCompare(dirMatch, &dirNeedle)!=0) {
++              if(dirMatch==NULL)
++                      dirMatch=al->dirs+al->numDirs;
 +              memmove(dirMatch+1, dirMatch, 
 +                      ((al->dirs+al->numDirs) - dirMatch)*sizeof(*al->dirs));
 +              dirMatch->dirName = xstrdup(dirNames[dirNum]);
 +              dirMatch->files = NULL;
 +              dirMatch->numFiles = 0;
                al->numDirs++;
++              for(i=0;i<dirNum;i++)
++                      if(dirMapping[i] >= dirMatch - al->dirs)
++                              dirMapping[i]++;
            }
 +          dirMapping[dirNum] = dirMatch - al->dirs;
 +      
        }
  
        free(dirNames);
-@@ -374,9 +375,6 @@
+@@ -374,9 +380,6 @@
  
            first = last + 1;
        }
@@ -39,9 +44,9 @@
  
      }
  
---- ./lib/misc.c.org   Sat Jun 16 14:14:12 2001
-+++ ./lib/misc.c       Sat Jun 16 14:14:30 2001
-@@ -869,3 +869,38 @@
+--- ./lib/misc.c~org   Wed Aug  1 22:14:31 2001
++++ ./lib/misc.c       Wed Aug  1 22:13:33 2001
+@@ -869,3 +869,39 @@
                &pEVR, 1);
      }
  }
@@ -50,7 +55,8 @@
 + * Modified by Pawel Kolodziej <pawelk@pld.org.pl>
 + * Perform a binary search for KEY in BASE which has NMEMB elements
 + * of SIZE bytes each.  The comparisons are done by (*COMPAR)(). 
-+ * Return element not less then KEY. Never return NULL
++ * Return element not less then KEY. Return NULL if all elements are 
++ * less then KEY
 + */
 +void *
 +bsearchnl (const void *key, const void *base, size_t nmemb, size_t size,
 +      else
 +      return (void *) p;
 +    }
-+  if(l > nmemb-1)
-+        l=nmemb-1;
++  if(nmemb == 0 || l > nmemb-1)
++        return NULL;
 +  p = (void *) (((const char *) base) + (l * size));
 +  return (void *)p;
 +}
 +
---- ./lib/misc.h.org   Sat Jun 16 14:14:12 2001
-+++ ./lib/misc.h       Sat Jun 16 14:14:30 2001
+--- ./lib/misc.h~org   Wed Aug  1 22:14:31 2001
++++ ./lib/misc.h       Wed Aug  1 22:13:33 2001
 @@ -102,6 +102,12 @@
   */
  void providePackageNVR(Header h);
This page took 0.043852 seconds and 4 git commands to generate.