Rein akademisch betrachtet: Wie muss man das richtig machen? Eine Schleife welche den Puffer so lange verdoppelt bis es irgendwann mal gepasst hat ist ja wirklich nicht schön...
Wohl war, aber ist die einzige valide Möglichkeit, wenn der Output-Parameter dir die Länge bei einem nil / 0 Aufruf nicht zurückgibt.
Warum man die
API an dieser Stelle so schlecht designed hat, erschließt sich mir allerdings auch nicht. An anderer Stelle ist es nachvollziehbar. Zum Beispiel immer dann, wenn dynamische Daten vorliegen, die sich "schnell" ändern (Prozessliste, etc). Dort macht es keinen Sinn eine feste Größe zurückzugeben, da sich diese beim zweiten Aufruf bereits wieder geändert haben kann. Mit dem Verdoppeln des Buffers hat man im Zweifelsfalle immer noch ein wenig Spielraum nach oben.