Author: kkaempf Date: Thu Dec 4 13:03:48 2008 New Revision: 11859 URL: http://svn.opensuse.org/viewcvs/zypp?rev=11859&view=rev Log: deal with accessing a single dep correctly Modified: trunk/sat-solver/applayer/dependency.c Modified: trunk/sat-solver/applayer/dependency.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/applayer/dependency.c?rev=11859&r1=11858&r2=11859&view=diff ============================================================================== --- trunk/sat-solver/applayer/dependency.c (original) +++ trunk/sat-solver/applayer/dependency.c Thu Dec 4 13:03:48 2008 @@ -58,17 +58,16 @@ int dependency_size( const Dependency *dep ) { - int i = 0; - Solvable *s; - Id *ids; Offset *relations = dependency_relations( dep ); if (relations) { - s = xsolvable_solvable( dep->xsolvable ); - ids = s->repo->idarraydata + *relations; + Solvable *s = xsolvable_solvable( dep->xsolvable ); + Id *ids = s->repo->idarraydata + *relations; + int i = 0; while (*ids++) ++i; + return i; } - return i; + return 0; } @@ -87,15 +86,17 @@ { Solvable *s = xsolvable_solvable( dep->xsolvable ); Offset *relations = dependency_relations( dep ); - /* loop over it to detect end */ - Id *ids = s->repo->idarraydata + *relations; - while ( i-- >= 0 ) { - if ( !*ids ) - break; - if ( i == 0 ) { - return relation_new( s->repo->pool, *ids ); + if (relations) { + /* loop over it to detect end */ + Id *ids = s->repo->idarraydata + *relations; + while ( i >= 0 ) { + if ( !*ids ) + break; + if ( i-- == 0 ) { + return relation_new( s->repo->pool, *ids ); + } + ++ids; } - ++ids; } return NULL; } -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org