Registrations are now open. Join us today!
There is still a lot of work to do on the wiki yet! More information about editing can be found here.
Already have an account?

Microsoft KB Archive/171350

From BetaArchive Wiki
< Microsoft KB Archive
Revision as of 10:05, 21 July 2020 by X010 (talk | contribs) (Text replacement - """ to """)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Knowledge Base


Article ID: 171350

Article Last Modified on 10/15/2002



APPLIES TO

  • Microsoft Visual SourceSafe 4.0a
  • Microsoft Visual SourceSafe 5.0 Standard Edition
  • Microsoft Visual SourceSafe 6.0 Standard Edition



This article was previously published under Q171350

SUMMARY

Analyze will always update the value of the file aaaaaaaa.cnt, even if you run it without -f. Visual SourceSafe uses this file to determine the next physical file to be created in the database. If a file is accidentally copied into one of the database subdirectories and Analyze is run on the database, aaaaaaaa.cnt may be set to an abnormally large value. If Analyze returns an "unable to create filemapping for database" error, you should check aaaaaaaa.cnt and you may need to reset it. You should also check the subdirectories of the data directory for a file that does not belong there.

MORE INFORMATION

SourceSafe database files follow an order that allows every log file in the data directory to be associated with a number. The number can be derived using the following algorithm:

   __int64 PhyToNum(char *szFile)
   {
   __int64 lFileNum = 0;   /* Counter for file Number */ 
   int  i;              /* Loop Variable */ 

   for( i=7; i >= 0; i-- ) /* Start from the right of the filename */ 
    {
     lFileNum *= 26;  /* Multiply by the appropriate power of 26 */ 
     lFileNum += (__int64)(toupper(szFile[i]) - 'A');
                      /* Convert the value */ 
    }
   return (lFileNum);
   }
                

Please note that the __int64 is a Microsoft-specific variable type for a 64- bit integer. This code snippet may not work with all compilers.

If Analyze detects a filename that was put into one of the subdirectories of the data directory by mistake, it can evaluate to a number higher than any other file in the database. Analyze allocates memory for every file from the first to the highest number it finds, even if some of those files do not physically exist in the data directory. This can cause Analyze to ask for more memory than the operating system can make available. As a result, the "unable to create filemapping" message appears.

If the aaaaaaaa.cnt is set to an incorrectly large value and files and projects are then added to SourceSafe, it might be impossible to return the database to a usable state without deleting and purging the files that represent the large values in their physical names. This can be very difficult if a large number of files and projects have been added since the aaaaaaaa.cnt file was set to a large value.

STATUS

Microsoft has confirmed this to be a problem in the Microsoft products listed at the beginning of this article.

Keywords: kbbug KB171350