diff mbox series

[v3,08/38] json-lexer: make it safe to call multiple times

Message ID 20180326150916.9602-9-marcandre.lureau@redhat.com
State New
Headers show
Series RFC: monitor: add asynchronous command type | expand

Commit Message

Marc-André Lureau March 26, 2018, 3:08 p.m. UTC
We can easily avoid the burden of checking if the lexer was
initialized prior to calling destroy by the caller, let's do it.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 qobject/json-lexer.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Markus Armbruster July 5, 2018, 11:42 a.m. UTC | #1
Marc-André Lureau <marcandre.lureau@redhat.com> writes:

> We can easily avoid the burden of checking if the lexer was
> initialized prior to calling destroy by the caller, let's do it.
>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  qobject/json-lexer.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/qobject/json-lexer.c b/qobject/json-lexer.c
> index 980ba159d6..0eaba43a2c 100644
> --- a/qobject/json-lexer.c
> +++ b/qobject/json-lexer.c
> @@ -386,5 +386,8 @@ int json_lexer_flush(JSONLexer *lexer)
>  
>  void json_lexer_destroy(JSONLexer *lexer)
>  {
> -    g_string_free(lexer->token, true);
> +    if (lexer->token) {
> +        g_string_free(lexer->token, true);
> +        lexer->token = NULL;
> +    }
>  }

Is this just on general principles[*], or does it enable simplifactions
later in this series?


[*] Write the destructor so that it just works on uninitialized,
all-zeroes objects, on partly initialized objects (constructor failed),
and on completely initialized objects (constructor succeeded).
Marc-André Lureau July 5, 2018, 12:17 p.m. UTC | #2
Hi

On Thu, Jul 5, 2018 at 1:42 PM, Markus Armbruster <armbru@redhat.com> wrote:
> Marc-André Lureau <marcandre.lureau@redhat.com> writes:
>
>> We can easily avoid the burden of checking if the lexer was
>> initialized prior to calling destroy by the caller, let's do it.
>>
>> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
>> ---
>>  qobject/json-lexer.c | 5 ++++-
>>  1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/qobject/json-lexer.c b/qobject/json-lexer.c
>> index 980ba159d6..0eaba43a2c 100644
>> --- a/qobject/json-lexer.c
>> +++ b/qobject/json-lexer.c
>> @@ -386,5 +386,8 @@ int json_lexer_flush(JSONLexer *lexer)
>>
>>  void json_lexer_destroy(JSONLexer *lexer)
>>  {
>> -    g_string_free(lexer->token, true);
>> +    if (lexer->token) {
>> +        g_string_free(lexer->token, true);
>> +        lexer->token = NULL;
>> +    }
>>  }
>
> Is this just on general principles[*], or does it enable simplifactions
> later in this series?
>
>

It allowed further simplification later in the series. I don't know if
this is still necessary after the rebase and other changes, feel free
to delay it.

thanks
diff mbox series

Patch

diff --git a/qobject/json-lexer.c b/qobject/json-lexer.c
index 980ba159d6..0eaba43a2c 100644
--- a/qobject/json-lexer.c
+++ b/qobject/json-lexer.c
@@ -386,5 +386,8 @@  int json_lexer_flush(JSONLexer *lexer)
 
 void json_lexer_destroy(JSONLexer *lexer)
 {
-    g_string_free(lexer->token, true);
+    if (lexer->token) {
+        g_string_free(lexer->token, true);
+        lexer->token = NULL;
+    }
 }