/********************************************************************/
-static int fsmInit(FSM_t fsm)
+static void fsmReset(FSM_t fsm)
{
- int rc = 0;
-
fsm->path = _free(fsm->path);
fsm->postpone = 0;
fsm->diskchecked = fsm->exists = 0;
fsm->nsuffix = NULL;
memset(&(fsm->sb), 0, sizeof(fsm->sb));
memset(&(fsm->osb), 0, sizeof(fsm->sb));
+}
+
+static int fsmInit(FSM_t fsm)
+{
+ int rc = 0;
if (fsm->goal == FSM_PKGINSTALL) {
/* Read next payload header. */
}
while (!rc) {
- /* Clean fsm, free'ing memory. Read next archive header. */
+ /* Clean fsm, free'ing memory. */
+ fsmReset(fsm);
+
+ /* Read next archive header. */
rc = fsmInit(fsm);
/* Exit on end-of-payload. */
while (!rc) {
/* Clean fsm, free'ing memory. */
+ fsmReset(fsm);
+
rc = fsmInit(fsm);
/* Exit on end-of-payload. */
rc = fsmSetup(fsm, FSM_PKGBUILD, ts, te, fi, cfd, NULL, archiveSize, failedFile);
while (!rc) {
+ fsmReset(fsm);
rc = fsmInit(fsm);