diff options
Diffstat (limited to 'lib/rpmfs.c')
-rw-r--r-- | lib/rpmfs.c | 9 |
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; + } } } |