diff options
author | Milan Crha <mcrha@redhat.com> | 2023-02-15 18:02:42 +0100 |
---|---|---|
committer | Milan Crha <mcrha@redhat.com> | 2023-02-15 18:02:42 +0100 |
commit | 1ada82101acd9437a825c11907c4910026c910f9 (patch) | |
tree | e6ba54aa3125b4855d08808a3e2ba4c823c0a609 /src/modules/rss/e-rss-parser.c | |
parent | 8e117e9c56d52fd013c1d167219dd52603decb52 (diff) | |
download | evolution-1ada82101acd9437a825c11907c4910026c910f9.tar.gz |
I#2261 - RSS: Read of author depends on element order
Closes https://gitlab.gnome.org/GNOME/evolution/-/issues/2261
Diffstat (limited to 'src/modules/rss/e-rss-parser.c')
-rw-r--r-- | src/modules/rss/e-rss-parser.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/modules/rss/e-rss-parser.c b/src/modules/rss/e-rss-parser.c index 25522f2a0a..54b5a9bfc8 100644 --- a/src/modules/rss/e-rss-parser.c +++ b/src/modules/rss/e-rss-parser.c @@ -62,14 +62,16 @@ e_rss_read_feed_person (xmlNodePtr author, xmlChar **out_email) { xmlNodePtr node; + gboolean email_set = FALSE; - for (node = author->children; node && (!*out_name || !*out_email); node = node->next) { + for (node = author->children; node && (!*out_name || !email_set); node = node->next) { if (g_strcmp0 ((const gchar *) node->name, "name") == 0) { g_clear_pointer (out_name, xmlFree); *out_name = xmlNodeGetContent (node); } else if (g_strcmp0 ((const gchar *) node->name, "email") == 0) { g_clear_pointer (out_email, xmlFree); *out_email = xmlNodeGetContent (node); + email_set = *out_email && **out_email; } else if (g_strcmp0 ((const gchar *) node->name, "uri") == 0 && (!*out_email || !**out_email)) { g_clear_pointer (out_email, xmlFree); @@ -82,6 +84,13 @@ e_rss_read_feed_person (xmlNodePtr author, if (*out_name && !**out_name) g_clear_pointer (out_name, xmlFree); } + + if (*out_email && ( + g_ascii_strncasecmp ((const gchar *) *out_email, "http://", 7) == 0 || + g_ascii_strncasecmp ((const gchar *) *out_email, "https://", 8) == 0)) { + /* Do not use URIs as emails */ + g_clear_pointer (out_email, xmlFree); + } } static gchar * |