diff options
| -rw-r--r-- | lib/libalpm/add.c | 37 | ||||
| -rw-r--r-- | lib/libalpm/alpm.c | 1 | ||||
| -rw-r--r-- | lib/libalpm/remove.c | 5 | ||||
| -rw-r--r-- | lib/libalpm/sync.c | 51 | 
4 files changed, 55 insertions, 39 deletions
| diff --git a/lib/libalpm/add.c b/lib/libalpm/add.c index 8f3d03ce..d683877d 100644 --- a/lib/libalpm/add.c +++ b/lib/libalpm/add.c @@ -196,9 +196,10 @@ int add_prepare(pmtrans_t *trans, pmdb_t *db, PMList **data)  	ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));  	ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1)); -	ASSERT(data != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1)); -	*data = NULL; +	if(data) { +		*data = NULL; +	}  	/* Check dependencies  	 */ @@ -220,13 +221,15 @@ int add_prepare(pmtrans_t *trans, pmdb_t *db, PMList **data)  					if(!errorout) {  						errorout = 1;  					} -					if((miss = (pmdepmissing_t *)malloc(sizeof(pmdepmissing_t))) == NULL) { -						FREELIST(lp); -						FREELIST(*data); -						RET_ERR(PM_ERR_MEMORY, -1); +					if(data) { +						if((miss = (pmdepmissing_t *)malloc(sizeof(pmdepmissing_t))) == NULL) { +							FREELIST(lp); +							FREELIST(*data); +							RET_ERR(PM_ERR_MEMORY, -1); +						} +						*miss = *(pmdepmissing_t*)i->data; +						*data = pm_list_add(*data, miss);  					} -					*miss = *(pmdepmissing_t*)i->data; -					*data = pm_list_add(*data, miss);  				}  			}  			if(errorout) { @@ -242,13 +245,15 @@ int add_prepare(pmtrans_t *trans, pmdb_t *db, PMList **data)  					if(!errorout) {  						errorout = 1;  					} -					if((miss = (pmdepmissing_t *)malloc(sizeof(pmdepmissing_t))) == NULL) { -						FREELIST(lp); -						FREELIST(*data); -						RET_ERR(PM_ERR_MEMORY, -1); +					if(data) { +						if((miss = (pmdepmissing_t *)malloc(sizeof(pmdepmissing_t))) == NULL) { +							FREELIST(lp); +							FREELIST(*data); +							RET_ERR(PM_ERR_MEMORY, -1); +						} +						*miss = *(pmdepmissing_t*)i->data; +						*data = pm_list_add(*data, miss);  					} -					*miss = *(pmdepmissing_t*)i->data; -					*data = pm_list_add(*data, miss);  				}  			}  			FREELIST(lp); @@ -277,7 +282,9 @@ int add_prepare(pmtrans_t *trans, pmdb_t *db, PMList **data)  		_alpm_log(PM_LOG_FLOW1, "looking for file conflicts");  		lp = db_find_conflicts(db, trans->packages, handle->root, &skiplist);  		if(lp != NULL) { -			*data = lp; +			if(data) { +				*data = lp; +			}  			FREELIST(skiplist);  			RET_ERR(PM_ERR_FILE_CONFLICTS, -1);  		} diff --git a/lib/libalpm/alpm.c b/lib/libalpm/alpm.c index 7dca7ffd..819807c6 100644 --- a/lib/libalpm/alpm.c +++ b/lib/libalpm/alpm.c @@ -611,7 +611,6 @@ int alpm_trans_prepare(PMList **data)  	/* Sanity checks */  	ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1)); -	ASSERT(data != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));  	trans = handle->trans;  	ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1)); diff --git a/lib/libalpm/remove.c b/lib/libalpm/remove.c index f6b85b8c..5b7fd418 100644 --- a/lib/libalpm/remove.c +++ b/lib/libalpm/remove.c @@ -78,7 +78,6 @@ int remove_prepare(pmtrans_t *trans, pmdb_t *db, PMList **data)  	ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));  	ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1)); -	ASSERT(data != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));  	if(!(trans->flags & (PM_TRANS_FLAG_NODEPS)) && (trans->type != PM_TRANS_TYPE_UPGRADE)) {  		EVENT(trans, PM_TRANS_EVT_CHECKDEPS_START, NULL, NULL); @@ -100,7 +99,9 @@ int remove_prepare(pmtrans_t *trans, pmdb_t *db, PMList **data)  					lp = checkdeps(db, trans->type, trans->packages);  				}  			} else { -				*data = lp; +				if(data) { +					*data = lp; +				}  				RET_ERR(PM_ERR_UNSATISFIED_DEPS, -1);  			}  		} diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index 7cbcf8a0..fc962a36 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -346,9 +346,10 @@ int sync_prepare(pmtrans_t *trans, pmdb_t *db_local, PMList *dbs_sync, PMList **  	ASSERT(db_local != NULL, RET_ERR(PM_ERR_DB_NULL, -1));  	ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1)); -	ASSERT(data != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1)); -	*data = NULL; +	if(data) { +		*data = NULL; +	}  	if(!(trans->flags & PM_TRANS_FLAG_NODEPS)) {  		for(i = trans->packages; i; i = i->next) { @@ -395,13 +396,15 @@ int sync_prepare(pmtrans_t *trans, pmdb_t *db_local, PMList *dbs_sync, PMList **  					if(!errorout) {  						errorout = 1;  					} -					if((miss = (pmdepmissing_t *)malloc(sizeof(pmdepmissing_t))) == NULL) { -						FREELIST(*data); -						pm_errno = PM_ERR_MEMORY; -						goto error; +					if(data) { +						if((miss = (pmdepmissing_t *)malloc(sizeof(pmdepmissing_t))) == NULL) { +							FREELIST(*data); +							pm_errno = PM_ERR_MEMORY; +							goto error; +						} +						*miss = *(pmdepmissing_t *)i->data; +						*data = pm_list_add(*data, miss);  					} -					*miss = *(pmdepmissing_t *)i->data; -					*data = pm_list_add(*data, miss);  				}  			}  			if(errorout) { @@ -527,25 +530,29 @@ int sync_prepare(pmtrans_t *trans, pmdb_t *db_local, PMList *dbs_sync, PMList **  									/* abort */  									_alpm_log(PM_LOG_ERROR, "package conflicts detected");  									errorout = 1; -									if((miss = (pmdepmissing_t *)malloc(sizeof(pmdepmissing_t))) == NULL) { -										FREELIST(*data); -										pm_errno = PM_ERR_MEMORY; -										goto error; +									if(data) { +										if((miss = (pmdepmissing_t *)malloc(sizeof(pmdepmissing_t))) == NULL) { +											FREELIST(*data); +											pm_errno = PM_ERR_MEMORY; +											goto error; +										} +										*miss = *(pmdepmissing_t *)i->data; +										*data = pm_list_add(*data, miss);  									} -									*miss = *(pmdepmissing_t *)i->data; -									*data = pm_list_add(*data, miss);  								}  							}  						} else {  							_alpm_log(PM_LOG_ERROR, "%s conflicts with %s", miss->target, miss->depend.name);  							errorout = 1; -							if((miss = (pmdepmissing_t *)malloc(sizeof(pmdepmissing_t))) == NULL) { -								FREELIST(*data); -								pm_errno = PM_ERR_MEMORY; -								goto error; +							if(data) { +								if((miss = (pmdepmissing_t *)malloc(sizeof(pmdepmissing_t))) == NULL) { +									FREELIST(*data); +									pm_errno = PM_ERR_MEMORY; +									goto error; +								} +								*miss = *(pmdepmissing_t *)i->data; +								*data = pm_list_add(*data, miss);  							} -							*miss = *(pmdepmissing_t *)i->data; -							*data = pm_list_add(*data, miss);  						}  					}  				} @@ -588,7 +595,9 @@ int sync_prepare(pmtrans_t *trans, pmdb_t *db_local, PMList *dbs_sync, PMList **  		_alpm_log(PM_LOG_DEBUG, "checking dependencies of packages designated for removal");  		deps = checkdeps(db_local, PM_TRANS_TYPE_REMOVE, list);  		if(deps) { -			*data = deps; +			if(data) { +				*data = deps; +			}  			pm_errno = PM_ERR_UNSATISFIED_DEPS;  			goto error;  		} | 
