location-gps-nmea: use g_autofree in location_gps_nmea_take_trace to track ownership

It allows simplify error handling.

Signed-off-by: Andrey Skvortsov <andrej.skvortzov@gmail.com>
This commit is contained in:
Andrey Skvortsov
2026-05-26 20:56:53 +00:00
parent 42ca47472a
commit 38548fedd3
+10 -14
View File
@@ -76,16 +76,15 @@ check_append_or_replace (MMLocationGpsNmea *self,
static gboolean
location_gps_nmea_take_trace (MMLocationGpsNmea *self,
gchar *trace)
gchar *_trace)
{
gchar *i;
gchar *trace_type;
gchar *i;
g_autofree gchar *trace_type = NULL;
g_autofree gchar *trace = _trace;
i = strchr (trace, ',');
if (!i || i == trace) {
g_free (trace);
if (!i || i == trace)
return FALSE;
}
trace_type = g_malloc (i - trace + 1);
memcpy (trace_type, trace, i - trace);
@@ -100,27 +99,24 @@ location_gps_nmea_take_trace (MMLocationGpsNmea *self,
previous = g_hash_table_lookup (self->priv->traces, trace_type);
if (previous) {
gchar *sequence;
g_autofree gchar *sequence = NULL;
/* Skip the trace if we already have it there */
if (strstr (previous, trace)) {
g_free (trace_type);
g_free (trace);
if (strstr (previous, trace))
return TRUE;
}
sequence = g_strdup_printf ("%s%s%s",
previous,
g_str_has_suffix (previous, "\r\n") ? "" : "\r\n",
trace);
g_free (trace);
trace = sequence;
trace = g_steal_pointer (&sequence);
}
}
g_hash_table_replace (self->priv->traces,
trace_type,
trace);
g_steal_pointer (&trace_type),
g_steal_pointer (&trace));
return TRUE;
}