diff options
author | Arystanbek Dyussenov <arystan.d@gmail.com> | 2010-09-09 15:01:30 +0400 |
---|---|---|
committer | Arystanbek Dyussenov <arystan.d@gmail.com> | 2010-09-09 15:01:30 +0400 |
commit | 7abf2faa20488877de24718ef830ec6ade81b08f (patch) | |
tree | 4fb22e152bac925adc60df09f09f11ffae30efb7 /source/blender/collada | |
parent | ad48fd1db981ca9f9e9e02a5f1f4c136740ae877 (diff) |
Bug #23715 in COLLADA exporter: prepend an '_' to the ID if it starts with an illegal character.
Pointed out by Tom Haines. Thanks!
Diffstat (limited to 'source/blender/collada')
-rw-r--r-- | source/blender/collada/DocumentExporter.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/source/blender/collada/DocumentExporter.cpp b/source/blender/collada/DocumentExporter.cpp index ae00942b89d..a5b4b1423bf 100644 --- a/source/blender/collada/DocumentExporter.cpp +++ b/source/blender/collada/DocumentExporter.cpp @@ -236,8 +236,14 @@ static std::string translate_id(const std::string &id) if (id.size() == 0) { return id; } std::string id_translated = id; - id_translated[0] = translate_start_name_map[(unsigned int)id_translated[0]]; - for (unsigned int i=1; i < id_translated.size(); i++) + int offset = 0; + // prepend '_' if the first character is illegal and not '_' already + if (id[0] != '_' && translate_start_name_map[(unsigned int)id[0]] == '_') + { + id_translated.insert(0, 1, '_'); + offset = 1; + } + for (unsigned int i=offset; i < id_translated.size(); i++) { id_translated[i] = translate_name_map[(unsigned int)id_translated[i]]; } |