From ada06e218e4e2c961e30662fd4e00ed9e9365683 Mon Sep 17 00:00:00 2001 From: Davide Beatrici Date: Wed, 19 Dec 2018 20:00:18 +0100 Subject: [PATCH] Mayaqua: revamp RecvHttpHeader() so that cleanup functions are not called twice --- src/Mayaqua/Network.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/src/Mayaqua/Network.c b/src/Mayaqua/Network.c index 2f4bf0ce..a469d752 100644 --- a/src/Mayaqua/Network.c +++ b/src/Mayaqua/Network.c @@ -20563,13 +20563,15 @@ HTTP_HEADER *RecvHttpHeader(SOCK *s) // Split into tokens token = ParseToken(str, " "); - if (token->NumTokens < 3) - { - goto LABEL_ERROR; - } Free(str); + if (token->NumTokens < 3) + { + FreeToken(token); + return NULL; + } + // Creating a header object header = NewHttpHeader(token->Token[0], token->Token[1], token->Token[2]); FreeToken(token); @@ -20594,21 +20596,15 @@ HTTP_HEADER *RecvHttpHeader(SOCK *s) if (AddHttpValueStr(header, str) == false) { - goto LABEL_ERROR; + Free(str); + FreeHttpHeader(header); + break; } Free(str); } return header; - -LABEL_ERROR: - // Memory release - Free(str); - FreeToken(token); - FreeHttpHeader(header); - - return NULL; } // Receive a line