Fix issue #9851 - only seed the random number generator on the first call to STRING(RANDOM or if given the new RANDOM_SEED argument. Add test and documentation of new argument.

This commit is contained in:
David Cole
2009-11-06 10:07:10 -05:00
parent 10762565e9
commit d6fe0438c1
3 changed files with 27 additions and 3 deletions

View File

@@ -700,6 +700,9 @@ bool cmStringCommand
return false;
}
static bool seeded = false;
bool force_seed = false;
int seed = (int) time(NULL);
int length = 5;
const char cmStringCommandDefaultAlphabet[] = "qwertyuiopasdfghjklzxcvbnm"
"QWERTYUIOPASDFGHJKLZXCVBNM"
@@ -723,6 +726,12 @@ bool cmStringCommand
++i;
alphabet = args[i];
}
else if ( args[i] == "RANDOM_SEED" )
{
++i;
seed = atoi(args[i].c_str());
force_seed = true;
}
}
}
if ( !alphabet.size() )
@@ -744,7 +753,13 @@ bool cmStringCommand
const std::string& variableName = args[args.size()-1];
std::vector<char> result;
srand((int)time(NULL));
if (!seeded || force_seed)
{
seeded = true;
srand(seed);
}
const char* alphaPtr = alphabet.c_str();
int cc;
for ( cc = 0; cc < length; cc ++ )