I'm trying to make a program that is supposed to :
But I kinda messed up, I have a stack overflow. Here's the function that causes me troubles:
BOOL LoopThroughDirectories(LPTSTR fileName)
{
    //Searching for files that matches in the current directory
    WIN32_FIND_DATA ffd;
    HANDLE hFirstFile = FindFirstFile(fileName, &ffd);
    if (hFirstFile != INVALID_HANDLE_VALUE)
    {
        do
        {
            //If it's not a directory
            if (ffd.dwFileAttributes & FILE_ATTRIBUTE_NORMAL)
            {
                _tprintf("%s\n", ffd.cFileName);
            }
        } while (FindNextFile(hFirstFile, &ffd));
    }
    FindClose(hFirstFile);
    //Go into the first unexplored directory
    HANDLE hFirstDir = FindFirstFile(_T("*"), &ffd);
    if (hFirstDir != INVALID_HANDLE_VALUE)
    {
        do
        {
            //If it's a directory
            if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
            {
                //Go into it 
                SetCurrentDirectory(ffd.cFileName);
                //and do the same
                LoopThroughDirectories(fileName);
                SetCurrentDirectory(_T(".."));
            }
        } while (FindNextFile(hFirstDir, &ffd));
    }
    FindClose(hFirstDir);
    return TRUE;
}
Here's my main function:
int _tmain(int argc, LPCTSTR argv[])
{
    //Parsing the command line arguments
    //Processing the fileName
    LPTSTR tempPath;
    LPTSTR fileName;
    //Checking for emptyness
    if (argc == 2)
    {
        tempPath = argv[1];
    }
    else
    {
        //If empty set filename to *
        tempPath = _T("*");
    }
    //Removing trailing backslash if any
    LPTSTR backSlash = _tcsrchr(tempPath, _T("\\"));
    if (backSlash != NULL)
    {
        //Replacing backslash with terminating null character
        *backSlash = _T("\0");
    }
    fileName = tempPath;
    //Looping through directories
    LoopThroughDirectories(fileName);
    return EXIT_SUCCESS;
}
Here's the exception that the VS Debugger gave me (I speak French sorry):
Exception non gérée à 0x77382358 (ntdll.dll) dans lsW.exe : 0xC00000FD: Stack overflow (paramètres : 0x00000001, 0x00802FEC).
User contributions licensed under CC BY-SA 3.0