Projects
Factory:RISC-V:Base
ModemManager
_service:tar_scm:backport-modem-helpers-rework-...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:backport-modem-helpers-rework-the-CGEV-indication-parser.patch of Package ModemManager
From 9bbc768666e8ca77abdda325c46588cbf8a4df64 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado <aleksandermj@chromium.org> Date: Wed, 24 Aug 2022 16:50:34 +0000 Subject: [PATCH] modem-helpers: rework the +CGEV indication parser We setup all output variables with g_autofree and then use g_steal_pointer() to return the needed ones. --- src/mm-modem-helpers.c | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/src/mm-modem-helpers.c b/src/mm-modem-helpers.c index 9c3b0ccdc..d71e1082c 100644 --- a/src/mm-modem-helpers.c +++ b/src/mm-modem-helpers.c @@ -3642,8 +3642,8 @@ mm_3gpp_parse_cgev_indication_pdp (const gchar *str, g_autoptr(GRegex) r = NULL; g_autoptr(GMatchInfo) match_info = NULL; GError *inner_error = NULL; - gchar *pdp_type = NULL; - gchar *pdp_addr = NULL; + g_autofree gchar *pdp_type = NULL; + g_autofree gchar *pdp_addr = NULL; guint cid = 0; g_assert (type == MM_3GPP_CGEV_REJECT || @@ -3660,44 +3660,38 @@ mm_3gpp_parse_cgev_indication_pdp (const gchar *str, str = mm_strip_tag (str, "+CGEV:"); g_regex_match_full (r, str, strlen (str), 0, 0, &match_info, &inner_error); - if (inner_error) - goto out; + if (inner_error) { + g_propagate_error (error, inner_error); + return FALSE; + } if (!g_match_info_matches (match_info)) { - inner_error = g_error_new (MM_CORE_ERROR, MM_CORE_ERROR_FAILED, "Couldn't match response"); - goto out; + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, "Couldn't match response"); + return FALSE; } if (out_pdp_type && !(pdp_type = mm_get_string_unquoted_from_match_info (match_info, 1))) { - inner_error = g_error_new (MM_CORE_ERROR, MM_CORE_ERROR_FAILED, "Error parsing PDP type"); - goto out; + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, "Error parsing PDP type"); + return FALSE; } if (out_pdp_addr && !(pdp_addr = mm_get_string_unquoted_from_match_info (match_info, 2))) { - inner_error = g_error_new (MM_CORE_ERROR, MM_CORE_ERROR_FAILED, "Error parsing PDP addr"); - goto out; + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, "Error parsing PDP addr"); + return FALSE; } /* CID is optional */ if (out_cid && (g_match_info_get_match_count (match_info) >= 4) && !mm_get_uint_from_match_info (match_info, 3, &cid)) { - inner_error = g_error_new (MM_CORE_ERROR, MM_CORE_ERROR_FAILED, "Error parsing CID"); - goto out; - } - -out: - if (inner_error) { - g_free (pdp_type); - g_free (pdp_addr); - g_propagate_error (error, inner_error); + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, "Error parsing CID"); return FALSE; } if (out_pdp_type) - *out_pdp_type = pdp_type; + *out_pdp_type = g_steal_pointer (&pdp_type); if (out_pdp_addr) - *out_pdp_addr = pdp_addr; + *out_pdp_addr = g_steal_pointer (&pdp_addr); if (out_cid) *out_cid = cid; return TRUE; -- GitLab
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2