[OE-core] [PATCH V2 2/2] epiphany: Do not bypass initialization of variable with __attribute__((cleanup))
Khem Raj
raj.khem at gmail.com
Tue May 14 03:23:39 UTC 2019
ping^1
On Fri, May 10, 2019 at 6:27 PM Khem Raj <raj.khem at gmail.com> wrote:
>
> This is reported with clang e.g.
> ../../../../../../../workspace/sources/epiphany/lib/ephy-web-app-utils.c:391:5: error: cannot jump from this goto statement to its label
> goto out;
> ^
> ../../../../../../../workspace/sources/epiphany/lib/ephy-web-app-utils.c:398:20: note: jump bypasses initialization of variable with __attribute__((cleanup))
> g_autofree char *app_file = g_build_filename (profile_dir, ".app", NULL);
> ^
> ../../../../../../../workspace/sources/epiphany/lib/ephy-web-app-utils.c:385:5: error: cannot jump from this goto statement to its label
> goto out;
> ^
> ../../../../../../../workspace/sources/epiphany/lib/ephy-web-app-utils.c:398:20: note: jump bypasses initialization of variable with __attribute__((cleanup)) g_autofree char *app_file = g_build_filename (profile_dir, ".app", NULL);
> ^
>
> Ensure that the initialization is deterministic for goto to work reliably
>
> Signed-off-by: Khem Raj <raj.khem at gmail.com>
> ---
> v2: Backport a patch instead of doing own
>
> .../epiphany/epiphany_3.32.1.2.bb | 1 +
> ...Clean-up-ephy_web_application_create.patch | 79 +++++++++++++++++++
> 2 files changed, 80 insertions(+)
> create mode 100644 meta/recipes-gnome/epiphany/files/0001-web-app-utils-Clean-up-ephy_web_application_create.patch
>
> diff --git a/meta/recipes-gnome/epiphany/epiphany_3.32.1.2.bb b/meta/recipes-gnome/epiphany/epiphany_3.32.1.2.bb
> index ba2e851bb6..49631d92d7 100644
> --- a/meta/recipes-gnome/epiphany/epiphany_3.32.1.2.bb
> +++ b/meta/recipes-gnome/epiphany/epiphany_3.32.1.2.bb
> @@ -12,6 +12,7 @@ REQUIRED_DISTRO_FEATURES = "x11 opengl"
>
> SRC_URI = "${GNOME_MIRROR}/${GNOMEBN}/${@gnome_verdir("${PV}")}/${GNOMEBN}-${PV}.tar.${GNOME_COMPRESS_TYPE};name=archive \
> file://0002-help-meson.build-disable-the-use-of-yelp.patch \
> + file://0001-web-app-utils-Clean-up-ephy_web_application_create.patch \
> "
> SRC_URI[archive.md5sum] = "93faec353e9f62519859e6164350fd5d"
> SRC_URI[archive.sha256sum] = "a8284fb9bbc8b7914a154a8eac1598c8b59ae421e0d685146fb48198427926be"
> diff --git a/meta/recipes-gnome/epiphany/files/0001-web-app-utils-Clean-up-ephy_web_application_create.patch b/meta/recipes-gnome/epiphany/files/0001-web-app-utils-Clean-up-ephy_web_application_create.patch
> new file mode 100644
> index 0000000000..ea644fb985
> --- /dev/null
> +++ b/meta/recipes-gnome/epiphany/files/0001-web-app-utils-Clean-up-ephy_web_application_create.patch
> @@ -0,0 +1,79 @@
> +From 49f435217873e679b142f64d3e7def919fb642bb Mon Sep 17 00:00:00 2001
> +From: Michael Catanzaro <mcatanzaro at igalia.com>
> +Date: Wed, 8 May 2019 15:58:32 +0000
> +Subject: [PATCH] web-app-utils: Clean up ephy_web_application_create()
> +
> +Fixes #764
> +
> +(cherry picked from commit 4e998d45e4cc549a7ca561a33895b0fbcf7ba6bb)
> +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/epiphany/commit/a6a022c9c498ad5dcf7f2220644a7520df74ca31]
> +
> +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> +---
> + lib/ephy-web-app-utils.c | 24 ++++++++++--------------
> + 1 file changed, 10 insertions(+), 14 deletions(-)
> +
> +diff --git a/lib/ephy-web-app-utils.c b/lib/ephy-web-app-utils.c
> +index 97f3f24..fc68a96 100644
> +--- a/lib/ephy-web-app-utils.c
> ++++ b/lib/ephy-web-app-utils.c
> +@@ -374,46 +374,42 @@ ephy_web_application_create (const char *id,
> + const char *name,
> + GdkPixbuf *icon)
> + {
> +- char *profile_dir;
> +- char *desktop_file_path = NULL;
> ++ g_autofree char *app_file = NULL;
> ++ g_autofree char *profile_dir = NULL;
> ++ g_autofree char *desktop_file_path = NULL;
> +
> + /* If there's already a WebApp profile for the contents of this
> + * view, do nothing. */
> + profile_dir = ephy_web_application_get_profile_directory (id);
> + if (g_file_test (profile_dir, G_FILE_TEST_IS_DIR)) {
> + g_warning ("Profile directory %s already exists", profile_dir);
> +- goto out;
> ++ return NULL;
> + }
> +
> + /* Create the profile directory, populate it. */
> + if (g_mkdir_with_parents (profile_dir, 488) == -1) {
> + g_warning ("Failed to create directory %s", profile_dir);
> +- goto out;
> ++ return NULL;
> + }
> +
> + /* Skip migration for new web apps. */
> + ephy_profile_utils_set_migration_version_for_profile_dir (EPHY_PROFILE_MIGRATION_VERSION, profile_dir);
> +
> + /* Create an .app file. */
> +- g_autofree char *app_file = g_build_filename (profile_dir, ".app", NULL);
> ++ app_file = g_build_filename (profile_dir, ".app", NULL);
> + int fd = g_open (app_file, O_WRONLY|O_CREAT|O_TRUNC, 0644);
> + if (fd < 0) {
> +- LOG ("Failed to create .app file: %s", g_strerror (errno));
> +- goto out;
> +- } else {
> +- close (fd);
> ++ g_warning ("Failed to create .app file: %s", g_strerror (errno));
> ++ return NULL;
> + }
> ++ close (fd);
> +
> + /* Create the deskop file. */
> + desktop_file_path = create_desktop_file (id, name, address, profile_dir, icon);
> + if (desktop_file_path)
> + ephy_web_application_initialize_settings (profile_dir);
> +
> +- out:
> +- if (profile_dir)
> +- g_free (profile_dir);
> +-
> +- return desktop_file_path;
> ++ return g_steal_pointer (&desktop_file_path);
> + }
> +
> + char *
> +--
> +2.21.0
> +
> --
> 2.21.0
>
More information about the Openembedded-core
mailing list