1
0
Fork 0

(svn r15107) -Fix [NoAI]: don't use so much explicit string copies if it is not required

release/0.7
truebrain 2009-01-16 14:56:13 +00:00
parent 95fa33157f
commit 7f851eaeb9
1 changed files with 7 additions and 11 deletions

View File

@ -355,21 +355,18 @@ AIInfo *AIScanner::FindInfo(const char *nameParam, int versionParam)
if (nameParam == NULL) return NULL; if (nameParam == NULL) return NULL;
char ai_name[1024]; char ai_name[1024];
char name[1024]; ttd_strlcpy(ai_name, nameParam, sizeof(ai_name));
ttd_strlcpy(name, nameParam, sizeof(name)); strtolower(ai_name);
AIInfo *info = NULL; AIInfo *info = NULL;
int version = -1; int version = -1;
if (versionParam == -1) { if (versionParam == -1) {
snprintf(ai_name, sizeof(ai_name), "%s", name);
strtolower(ai_name);
/* We want to load the latest version of this AI; so find it */ /* We want to load the latest version of this AI; so find it */
if (this->info_single_list.find(ai_name) != this->info_single_list.end()) return this->info_single_list[ai_name]; if (this->info_single_list.find(ai_name) != this->info_single_list.end()) return this->info_single_list[ai_name];
/* If we didn't find a match AI, maybe the user included a version */ /* If we didn't find a match AI, maybe the user included a version */
char *e = strrchr(name, '.'); char *e = strrchr(ai_name, '.');
if (e == NULL) return NULL; if (e == NULL) return NULL;
*e = '\0'; *e = '\0';
e++; e++;
@ -378,14 +375,13 @@ AIInfo *AIScanner::FindInfo(const char *nameParam, int versionParam)
} }
/* Try to find a direct 'name.version' match */ /* Try to find a direct 'name.version' match */
snprintf(ai_name, sizeof(ai_name), "%s.%d", name, versionParam); char ai_name_tmp[1024];
strtolower(ai_name); snprintf(ai_name_tmp, sizeof(ai_name_tmp), "%s.%d", ai_name, versionParam);
if (this->info_list.find(ai_name) != this->info_list.end()) return this->info_list[ai_name]; strtolower(ai_name_tmp);
if (this->info_list.find(ai_name_tmp) != this->info_list.end()) return this->info_list[ai_name_tmp];
/* See if there is a compatible AI which goes by that name, with the highest /* See if there is a compatible AI which goes by that name, with the highest
* version which allows loading the requested version */ * version which allows loading the requested version */
snprintf(ai_name, sizeof(ai_name), "%s", name);
strtolower(ai_name);
AIInfoList::iterator it = this->info_list.begin(); AIInfoList::iterator it = this->info_list.begin();
for (; it != this->info_list.end(); it++) { for (; it != this->info_list.end(); it++) {
char ai_name_compare[1024]; char ai_name_compare[1024];