summaryrefslogtreecommitdiff
path: root/lib/rpmfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rpmfs.c')
-rw-r--r--lib/rpmfs.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/rpmfs.c b/lib/rpmfs.c
index ed272a9f1..874fce130 100644
--- a/lib/rpmfs.c
+++ b/lib/rpmfs.c
@@ -17,8 +17,7 @@ rpmfs rpmfsNew(rpm_count_t fc, int initState)
{
rpmfs fs = xcalloc(1, sizeof(*fs));
fs->fc = fc;
- fs->actions = xmalloc(fs->fc * sizeof(*fs->actions));
- rpmfsResetActions(fs);
+ fs->actions = xcalloc(fs->fc, sizeof(*fs->actions));
if (initState) {
fs->states = xmalloc(sizeof(*fs->states) * fs->fc);
memset(fs->states, RPMFILE_STATE_NORMAL, fs->fc);
@@ -119,6 +118,10 @@ void rpmfsSetAction(rpmfs fs, unsigned int ix, rpmFileAction action)
void rpmfsResetActions(rpmfs fs)
{
if (fs && fs->actions) {
- memset(fs->actions, FA_UNKNOWN, fs->fc * sizeof(*fs->actions));
+ for (int i = 0; i < fs->fc; i++) {
+ /* --excludepaths is processed early, avoid undoing that */
+ if (fs->actions[i] != FA_SKIPNSTATE)
+ fs->actions[i] = FA_UNKNOWN;
+ }
}
}