ref: 339329449f4db72e4754f21c14295303ffe0ea5d
parent: 0b93de904a98f119b1a95d3a53029f1ed4bfb9b3
author: Simon Tatham <[email protected]>
date: Sat Apr 13 06:37:27 EDT 2013
Fix a memory management bug in Filling: in some situations its solve_game() was returning its aux parameter un-dupstr()ed, which is wrong. Also clarified the developer docs on that function to make it clearer that the returned string should be dynamic. [originally from svn r9831]
--- a/devel.but
+++ b/devel.but
@@ -1020,9 +1020,11 @@
\q{Solution not known for this puzzle}); that error message is not
expected to be dynamically allocated.
-If this function \e{does} produce a solution, it returns a move
-string suitable for feeding to \cw{execute_move()}
-(\k{backend-execute-move}).
+If this function \e{does} produce a solution, it returns a move string
+suitable for feeding to \cw{execute_move()}
+(\k{backend-execute-move}). Like a (non-empty) string returned from
+\cw{interpret_move()}, the returned string should be dynamically
+allocated.
\H{backend-drawing} Drawing the game graphics
--- a/filling.c
+++ b/filling.c
@@ -975,7 +975,7 @@
if (!solver(state->board, w, h, &aux))
*error = "Sorry, I couldn't find a solution";
}
- return aux;
+ return dupstr(aux);
}
/*****************************************************************************