Georg Baum <[EMAIL PROTECTED]> writes:

|  string const FileName::mangledFilename() const
|  {
| +     // We need to make sure that every FileName instance for a given
| +     // filename returns the same mangled name.
| +     static map<string, string> mangledNames;
| +     map<string, string>::const_iterator const it = mangledNames.find(name_);

Use a typedef:

    typedef map<string, string> MangledNames;
    static MangledNames mandledNames;
    MangledNames::cont_iterator it = mangledNames.find(name_);

| +     if (it != mangledNames.end())
| +             return (*it).second;
| +
| +     // Now the real work
|       string mname = os::slashify_path(name_);
|       // Remove the extension.
|       mname = ChangeExtension(name_, string());
| @@ -73,7 +85,15 @@
|       // Replace '.' in the file name with '_'
|       mname = subst(mname, ".", "_");
|       // Add the extension back on
| -     return ChangeExtension(mname, GetExtension(name_));
| +     mname = ChangeExtension(mname, GetExtension(name_));
| +     // Prepend a counter to the filename. This is necessary to make
| +     // the mangled name unique.
| +     static int counter = 0;

You shouldn't intialize this, that is done by the compilator.


-- 
        Lgb

Reply via email to