Skip to content

Commit

Permalink
SLUDGE: Move copyStack() to struct Variable
Browse files Browse the repository at this point in the history
  • Loading branch information
yinsimei committed May 31, 2018
1 parent ca583eb commit 80478ee
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 12 deletions.
2 changes: 1 addition & 1 deletion engines/sludge/builtin.cpp
Expand Up @@ -551,7 +551,7 @@ builtIn(copyStack) {
return BR_ERROR;
}
// Return value
if (!copyStack(fun->stack->thisVar, fun->reg))
if (!fun->reg.copyStack(fun->stack->thisVar))
return BR_ERROR;
trimStack(fun->stack);
return BR_CONTINUE;
Expand Down
20 changes: 10 additions & 10 deletions engines/sludge/variable.cpp
Expand Up @@ -170,20 +170,20 @@ bool getSavedGamesStack(StackHandler *sH, const Common::String &ext) {
return true;
}

bool copyStack(const Variable &from, Variable &to) {
to.varType = SVT_STACK;
to.varData.theStack = new StackHandler;
if (!checkNew(to.varData.theStack))
bool Variable::copyStack(const Variable &from) {
varType = SVT_STACK;
varData.theStack = new StackHandler;
if (!checkNew(varData.theStack))
return false;
to.varData.theStack->first = NULL;
to.varData.theStack->last = NULL;
to.varData.theStack->timesUsed = 1;
varData.theStack->first = NULL;
varData.theStack->last = NULL;
varData.theStack->timesUsed = 1;
VariableStack *a = from.varData.theStack->first;

while (a) {
addVarToStack(a->thisVar, to.varData.theStack->first);
if (to.varData.theStack->last == NULL) {
to.varData.theStack->last = to.varData.theStack->first;
addVarToStack(a->thisVar, varData.theStack->first);
if (varData.theStack->last == NULL) {
varData.theStack->last = varData.theStack->first;
}
a = a->next;
}
Expand Down
4 changes: 3 additions & 1 deletion engines/sludge/variable.h
Expand Up @@ -103,6 +103,9 @@ struct Variable {
bool makeFastArrayFromStack(const StackHandler *stacky);
bool makeFastArraySize(int size);

// Stack variable
bool copyStack(const Variable &from);

// Add variables
void addVariablesInSecond(const Variable &other);
void compareVariablesInSecond(const Variable &other);
Expand Down Expand Up @@ -132,7 +135,6 @@ bool addVarToStack(const Variable &va, VariableStack *&thisStack);
bool addVarToStackQuick(Variable &va, VariableStack *&thisStack);
void trimStack(VariableStack *&stack);
int deleteVarFromStack(const Variable &va, VariableStack *&thisStack, bool allOfEm = false);
bool copyStack(const Variable &from, Variable &to);
int stackSize(const StackHandler *me);
bool getSavedGamesStack(StackHandler *sH, const Common::String &ext);

Expand Down

0 comments on commit 80478ee

Please sign in to comment.