cc490e2
diff -up cups-1.4rc1/scheduler/cups-driverd.cxx.str3279 cups-1.4rc1/scheduler/cups-driverd.cxx
cc490e2
--- cups-1.4rc1/scheduler/cups-driverd.cxx.str3279	2009-06-08 23:00:14.000000000 +0100
cc490e2
+++ cups-1.4rc1/scheduler/cups-driverd.cxx	2009-08-10 15:48:26.255839804 +0100
cc490e2
@@ -1493,12 +1493,16 @@ load_ppds(const char *d,		/* I - Actual 
cc490e2
 	ppd->record.size == dent->fileinfo.st_size &&
cc490e2
 	ppd->record.mtime == dent->fileinfo.st_mtime)
cc490e2
     {
cc490e2
-      do
cc490e2
+      /* Rewind to the beginning of this run. */
cc490e2
+      while ((ppd = (ppd_info_t *)cupsArrayPrev(PPDsByName)) != NULL &&
cc490e2
+	     !strcmp(ppd->record.filename, name))
cc490e2
+	;
cc490e2
+
cc490e2
+      while ((ppd = (ppd_info_t *)cupsArrayNext(PPDsByName)) != NULL &&
cc490e2
+	     !strcmp(ppd->record.filename, name))
cc490e2
       {
cc490e2
         ppd->found = 1;
cc490e2
       }
cc490e2
-      while ((ppd = (ppd_info_t *)cupsArrayNext(PPDsByName)) != NULL &&
cc490e2
-	     !strcmp(ppd->record.filename, name));
cc490e2
 
cc490e2
       continue;
cc490e2
     }
cc490e2
@@ -1929,7 +1933,7 @@ load_drv(const char  *filename,		/* I - 
cc490e2
   * Add a dummy entry for the file...
cc490e2
   */
cc490e2
 
cc490e2
-  add_ppd(filename, filename, "", "", "", "", "", "", mtime, size, 0,
cc490e2
+  add_ppd(name, name, "", "", "", "", "", "", mtime, size, 0,
cc490e2
           PPD_TYPE_DRV, "drv");
cc490e2
   ChangedPPD = 1;
cc490e2
 
cc490e2
@@ -1988,7 +1992,7 @@ load_drv(const char  *filename,		/* I - 
cc490e2
       {
cc490e2
         product_found = true;
cc490e2
 
cc490e2
-	add_ppd(filename, uri, "en", d->manufacturer->value, make_model,
cc490e2
+	add_ppd(name, uri, "en", d->manufacturer->value, make_model,
cc490e2
 		device_id ? device_id->value->value : "",
cc490e2
 		product->value->value,
cc490e2
 		ps_version ? ps_version->value->value : "(3010) 0",
cc490e2
@@ -1996,7 +2000,7 @@ load_drv(const char  *filename,		/* I - 
cc490e2
       }
cc490e2
 
cc490e2
     if (!product_found)
cc490e2
-      add_ppd(filename, uri, "en", d->manufacturer->value, make_model,
cc490e2
+      add_ppd(name, uri, "en", d->manufacturer->value, make_model,
cc490e2
 	      device_id ? device_id->value->value : "",
cc490e2
 	      d->model_name->value,
cc490e2
 	      ps_version ? ps_version->value->value : "(3010) 0",