diff --git a/src/misc.h b/src/misc.h
index 58646aaf..29d35d5b 100644
--- a/src/misc.h
+++ b/src/misc.h
@@ -38,7 +38,7 @@ extern void dbg_mean_of(int v);
extern void dbg_print();
class Position;
-extern Move move_from_uci(const Position& pos, std::string str);
+extern Move move_from_uci(const Position& pos, std::string& str);
extern const std::string move_to_uci(Move m, bool chess960);
extern const std::string move_to_san(Position& pos, Move m);
diff --git a/src/move.cpp b/src/move.cpp
index 62ec7579..74271b31 100644
--- a/src/move.cpp
+++ b/src/move.cpp
@@ -17,7 +17,6 @@
along with this program. If not, see .
*/
-#include
#include
#include
@@ -57,10 +56,10 @@ const string move_to_uci(Move m, bool chess960) {
/// simple coordinate notation and returns an equivalent Move if any.
/// Moves are guaranteed to be legal.
-Move move_from_uci(const Position& pos, string str) {
+Move move_from_uci(const Position& pos, string& str) {
- // Some GUIs, like Junior, could send promotion in uppercase
- std::transform(str.begin(), str.end(), str.begin(), tolower);
+ if (str.length() == 5) // Junior could send promotion in uppercase
+ str[4] = char(tolower(str[4]));
for (MoveList ml(pos); !ml.end(); ++ml)
if (str == move_to_uci(ml.move(), pos.is_chess960()))