DOCUMENT:Q171350 01-MAY-2001 [ssafe] TITLE :BUG: Analyze Always Updates aaaaaaaa.cnt PRODUCT :Microsoft SourceSafe PROD/VER: OPER/SYS: KEYWORDS:kbSSafe400bug kbSSafe500bug kbSSafe600bug ====================================================================== ------------------------------------------------------------------------------- The information in this article applies to: - Microsoft Visual SourceSafe for Windows, versions 4.0a, 5.0, 6.0 ------------------------------------------------------------------------------- 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. Additional query words: ====================================================================== Keywords : kbSSafe400bug kbSSafe500bug kbSSafe600bug Technology : kbSSafeSearch kbAudDeveloper kbSSafe600 kbSSafe400a kbSSafe500 Issue type : kbbug ============================================================================= THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY. Copyright Microsoft Corporation 2001.