razor.c
changeset 124 feef7736a439
parent 123 4e699bd39b40
child 126 3142795705a5
     1.1 --- a/razor.c	Fri Feb 15 09:31:20 2008 -0500
     1.2 +++ b/razor.c	Fri Feb 15 15:08:38 2008 -0500
     1.3 @@ -248,7 +248,8 @@
     1.4  {
     1.5  	list_set_array(&importer->package->properties,
     1.6  		       &importer->set->property_pool,
     1.7 -		       &importer->properties);
     1.8 +		       &importer->properties,
     1.9 +		       1);
    1.10  
    1.11  	array_release(&importer->properties);
    1.12  }
    1.13 @@ -510,11 +511,12 @@
    1.14  	}
    1.15  	free(map);
    1.16  
    1.17 -	up++;
    1.18 +	if (up != rp)
    1.19 +		up++;
    1.20  	set->properties.size = (void *) up - set->properties.data;
    1.21  	rp_end = up;
    1.22  	for (rp = set->properties.data, p = pkgs; rp < rp_end; rp++, p++) {
    1.23 -		list_set_array(&rp->packages, &set->package_pool, p);
    1.24 +		list_set_array(&rp->packages, &set->package_pool, p, 0);
    1.25  		array_release(p);
    1.26  	}
    1.27  
    1.28 @@ -565,7 +567,7 @@
    1.29  		e->start = p->count > 0 ? s : 0;
    1.30  		s += p->count;
    1.31  
    1.32 -		list_set_array(&e->packages, &set->package_pool, &p->packages);
    1.33 +		list_set_array(&e->packages, &set->package_pool, &p->packages, 0);
    1.34  		array_release(&p->packages);
    1.35  		p++;
    1.36  	}		
    1.37 @@ -687,7 +689,7 @@
    1.38  
    1.39  	packages = set->packages.data;
    1.40  	for (i = 0; i < count; i++) {
    1.41 -		list_set_array(&packages[i].files, &set->file_pool, &pkgs[i]);
    1.42 +		list_set_array(&packages[i].files, &set->file_pool, &pkgs[i], 0);
    1.43  		array_release(&pkgs[i]);
    1.44  	}
    1.45  	free(pkgs);
    1.46 @@ -1210,12 +1212,16 @@
    1.47  	send = source1->set->packages.data + source1->set->packages.size;
    1.48  	spool = source1->set->string_pool.data;
    1.49  
    1.50 -	while (s < send) {
    1.51 +	while (s < send || u < uend) {
    1.52  		p = upstream_packages + *u;
    1.53  
    1.54 -		if (u < uend)
    1.55 +		if (s < send && u < uend)
    1.56  			cmp = strcmp(&spool[s->name], &upool[p->name]);
    1.57 -		if (u >= uend || cmp < 0) {
    1.58 +		else if (s < send)
    1.59 +			cmp = -1;
    1.60 +		else
    1.61 +			cmp = 1;
    1.62 +		if (cmp < 0) {
    1.63  			add_package(merger, s, source1, 0);
    1.64  			s++;
    1.65  		} else if (cmp == 0) {
    1.66 @@ -1364,7 +1370,7 @@
    1.67  	prop_end = set->properties.data + set->properties.size;
    1.68  	a = pkgs;
    1.69  	for (prop = set->properties.data; prop < prop_end; prop++, a++) {
    1.70 -		list_set_array(&prop->packages, pool, a);
    1.71 +		list_set_array(&prop->packages, pool, a, 0);
    1.72  		array_release(a);
    1.73  	}
    1.74  	free(pkgs);