http://www.pronix.de -> Forum -> C-Programmieren -> Code-Schnipsel

Unterseiten

Code-Schnipsel

Moderatoren: broesel, Martin Conrad, Patrick

Thema: substr() & Co.

  • (nur registrierte Mitglieder)

[EDIT] - Re: substr() & Co.

scusi71 am 29.10.2008 um 20:56

Hallo Philip,

der folgende Code sollte eigentlich eine Overflow verhindern. Allerdings hast Du als C89er natürlich kein SIZE_MAX, aber dafür findest Du sicher eine Lösung.


size_t size = strlen(haystack)
    if (m)
    {
        const size_t needles_size = strlen(needle);
        const size_t replace_size = strlen(replace);
        
        if (replace_size < needles_size)
        {
            size -= m * (needles_size - replace_size);
        }
        else if (replace_size > needles_size)
        {
            const size_t diff = replace_size - needles_size;
            if (diff > (SIZE_MAX - size) / m)
            {
                // Overflow
                return 0;
            }
            size += m * diff;
        }
    }
    return size;
 
  • (nur registrierte Mitglieder)