[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: liferea: diff for NMU version 1.8.6-1+nmu1



On 11/19/2012 12:33 AM, Paul Gevers wrote:
OK. I've gone back and now added justifications for the bugs that I made
important and included the fixes for in this NMU.
Reading it back, I still think this bug does not qualify as important.
Yes, it's annoying, but it does not "have a major effect on the
usability of a package, without rendering it completely unusable to
everyone". And why did you remove the forwarded tag? Why did you not
forward your patch to the upstream bug-report? I am afraid that this bug
will have to wait until after Wheezy. I suggest you reconsider.

Just for my testing, how do you set/unset these notifications? And do I
understand correctly it ONLY is relevant for google feeds?
OK, I've removed this patch from the series.
I removed the forwarded tag because it wasn't resolved in the upstream bug report, so I thought the forwarded really wasn't relevant anymore. At the time, I didn't test the latest upstream release to see if the bug even applied to upstream and was just focused on getting it fixed for Debian Wheezy. I've now tested the upstream Stable release and realized the bug still applies to the latest upstream version so I've added the same forwarded tag back, put my patch in the upstream bug report and e-mailed the upstream dev to have a look at it.

Tools->Preferences->GUI->Show a popup window with new headlines to set notifications.

Yes, as far as I know, it is only relevant when synchronizing with google reader feeds.

Good. However, I would appreciate it if you could also add the Bug: and
Bug-Debian: tags to the patch headers [0]. If you don't then at the very
least mention in the changelog which patch belongs to which bug. You
might want to do this anyway.

[0]http://dep.debian.net/deps/dep3/

Done.
* I also added a patch for adding the hardened build wrapper.  Liferea
has a parser that parses feeds from the Internet so I thought it best to
harden the compile, and this also fixes two lintian warnings.  I was
told on IRC that hardened packages is a release goal so they should
automatically be "important" , but I was also told that using the
hardened wrapper to do it is deprecated. It was suggested that using the
other way (build flags) to harden the package may be too invasive as the
package is only compat 7 and has it's own custom build flags.. So I'm
not sure what to do here if simply adding the hardened build wrapper
isn't acceptable.
Hmm, I am not sure. Reading [1], I don't see the wrapper being
deprecated. But I do see that you have more options in the recommended
dpkg-buildflags section than just to switch to dh, i.e. using them
directly. I don't have experience with these hardening options, but I
think I like the following better:
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk
CFLAGS += -g -O$(if $(findstring noopt,$(DEB_BUILD_OPTIONS)),0,2)
LDFLAGS += "-Wl,--as-needed"

But maybe other mentors can state their opinion as well.

[1]http://wiki.debian.org/Hardening
In addition to the above, I added:
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
before the buildflags include to get a fully hardened binary.
According to hardening-check, it's fully hardened.

Note: Due to a lintian error, I had to add dpkg-dev (>= 1.16.1~) to build-dependencies.

+  * Added hardening-wrapper since liferea has a parser and should be
+    built with hardening.  (Closes: #692527)
See above. And please tag the bug such that it shows up at [2]

[2]
http://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=goal-hardening;users=hardening-discuss@lists.alioth.debian.org


Done.

+ -- David Michael Smith<sidicas2@gmail.com>   Sat, 10 Nov 2012 10:43:14 +0800
Please also update the timestamp. And you have several spaces at the end
of lines. Please remove them.
Done.

diff -Nru liferea-1.8.6/debian/control liferea-1.8.6/debian/control
-               libwebkit-dev (>= 1.2.2),
+               libwebkitgtk-dev (>= 1.8.1),
Although I suggest to remove it now, why also update the version? This
is not documented in the changelog.

I set the version to the libwebkitgtk-dev that is in Wheezy. I noticed that older versions of libwebkit & libxml2 cause problems because when libwebkit or libxml2 crashes, it always causes liferea to crash. There were a bunch of bug reports that got tracked back to old versions of libwebkit or libxml2 (#551147) and I suspect several others are related to old versions of those libs as well (#583990, #609494, #645423). I don't have any bug reports as specifically being marked as resolved-by having a newer version of the lib though.

Though I'll admit it's certainly not *required* to have the new version so I removed the increase in the version number from the NMU.


diff -Nru liferea-1.8.6/debian/patches/fix-browser-selections liferea-1.8.6/debian/patches/fix-browser-selections
+Patch by David Smith<sidicas2@gmail.com>
+Fixed a bug where web browser doesn't launch due to not
+having gnome desktop installed, or the wrong web browser is
+launched due to not having an appropriate fallback.
+Posted by him to #668197
+Last-Update 2012-11-07
It would be nice if you use the tags and syntax from deb3 [0].
Done.

Note: Upstream has just contacted me saying that they accepted a slight modification of my patch. I've replaced this patch with upstream's modified patch[0]. I had forgot to free a variable after using it.
Upstream's changelog at [1].

[0] http://sourceforge.net/p/liferea/code/ci/408a99b39535c4eb79983ebd2936a8eda5fff8b7/tree/src/browser.c?diff=17d567de43aef87eca93014caa6f782ab7b1ff91

[1] http://liferea.git.sourceforge.net/git/gitweb.cgi?p=liferea/liferea;a=blob_plain;f=ChangeLog;hb=liferea-1_8


diff -Nru liferea-1.8.6/debian/patches/fix-google-reader-notifications liferea-1.8.6/debian/patches/fix-google-reader-notifications
+ 				if (allowStateChanges) {
++					if ((!oldItem->readStatus)&&  (newItem->readStatus))
+ 					oldItem->readStatus = newItem->readStatus;
+ 					oldItem->flagStatus = newItem->flagStatus;
+ 				}
Can you explain how this is supposed to work? And wouldn't you want the
same change for the flagStatus as well?

Note: (This patch is now removed from the series in my NMU)

This is what it's doing during sync without the patch:
1. Liferea downloads a feed
2. Liferea pops a notification of a new feed
3. User reads the feed
4. Liferea downloads the same feed again to check for any updates (automatically scheduled) 5. Liferea changes the feed the user just read back from "read" status to "unread" status
6. Liferea pops a notification of a new feed item (same news item)
7. Liferea sets the feed back to "read" status, I think when it refreshes the GUI.

...And this pretty much loops every few minutes or so.

All I did was add an IF that says only update the readStatus if the local copy (oldItem) has not been read and the remote copy it's synchronizing with (newItem) has been read.

The flag status doesn't impact the desktop notifications so I don't change it.

Side-Note: Still waiting for upstream to get back to me on their comments for this patch.


Paul
btw I think you can close bug 496886


Done.

I've attached a new NMU diff. Let me know if it looks good and I'll go ahead and do an upload.



diff -Nru liferea-1.8.6/debian/changelog liferea-1.8.6/debian/changelog
--- liferea-1.8.6/debian/changelog	2012-07-01 05:45:40.000000000 +0800
+++ liferea-1.8.6/debian/changelog	2012-12-15 19:29:35.000000000 +0800
@@ -1,3 +1,23 @@
+liferea (1.8.6-1.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Fixed crash when dragging Google Reader feeds to parent node.
+    (Closes: #692526)
+  * Fixed crash when removing folders in Google Reader feeds.
+    (Closes: #692525)
+  * Fixed crash when opening empty links in feeds. (Closes: #692272)
+  * Fixed crash when network online status changes. (Closes: #692270)
+  * Fixed bug where web browser doesn't launch or the wrong web browser is
+    launched. (Closes: #668197)
+  * Replaced build-depends on transitional package libwebkit-dev with
+    libwebkitgtk-dev. (Closes: #677749)
+  * Added hardening build flags since liferea has a parser and should be
+    built with hardening. (Closes: #692527)
+  * Added build dependency on dpkg-dev (>= 1.16.1~) to enable build flags
+    with hardening.
+
+ -- David Smith <sidicas2@gmail.com>  Sat, 15 Dec 2012 16:35:23 +0800
+
 liferea (1.8.6-1) unstable; urgency=low
 
   * Fixes ever growing temporary DB files. (patch by Sven Hartge)
diff -Nru liferea-1.8.6/debian/control liferea-1.8.6/debian/control
--- liferea-1.8.6/debian/control	2012-07-01 05:38:09.000000000 +0800
+++ liferea-1.8.6/debian/control	2012-12-15 18:55:27.000000000 +0800
@@ -15,14 +15,15 @@
                libglade2-dev,
                libgtk2.0-dev (>= 2.18.0),
                libglib2.0-dev (>= 2.24.0),
-               libwebkit-dev (>= 1.2.2),
+               libwebkitgtk-dev (>= 1.2.2),
                intltool,
                libicu-dev,
                libx11-dev,
                dh-autoreconf,
                libice-dev,
                libunique-dev,
-               libjson-glib-dev	      
+               libjson-glib-dev,
+               dpkg-dev (>= 1.16.1~)
 Standards-Version: 3.9.3
 Homepage: http://liferea.sourceforge.net/
 Vcs-Browser: http://git.debian.org/?p=collab-maint/liferea.git
diff -Nru liferea-1.8.6/debian/patches/fix-browser-selections liferea-1.8.6/debian/patches/fix-browser-selections
--- liferea-1.8.6/debian/patches/fix-browser-selections	1970-01-01 08:00:00.000000000 +0800
+++ liferea-1.8.6/debian/patches/fix-browser-selections	2012-12-15 18:36:03.000000000 +0800
@@ -0,0 +1,34 @@
+From: Lars Windolf <lars.lindner@gmail.com>
+Subject: x-www-browser preference not working
+Description: Fixed a bug where web browser doesn't launch
+due to not having gnome desktop installed, or the wrong
+web browser is launched due to not having an appropriate
+fallback.
+Origin: upstream, http://liferea.git.sourceforge.net/git/gitweb.cgi?p=liferea/liferea;a=commit;h=408a99b39535c4eb79983ebd2936a8eda5fff8b7
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=668197
+Last-Update: 2012-12-15
+--- a/src/browser.c
++++ b/src/browser.c
+@@ -244,6 +244,7 @@
+ 	struct browser	*browser;
+ 	gchar		*cmd = NULL;
+ 	gboolean	done = FALSE;	
++	gchar		*libname = NULL;
+ 	
+ 	g_assert (uri != NULL);
+ 	
+@@ -255,8 +256,12 @@
+ 			done = browser_execute (cmd, uri, TRUE);
+ 			g_free (cmd);
+ 		} else {
+-			/* the "default" browser has no command to use the GTK launch mechanism */
+-			done = gtk_show_uri (NULL, uri, 0, NULL);
++			/* the "default" browser has no command to use the GTK
++			   launch mechanism, so we use gtk_show_uri() instead */
++			conf_get_str_value (BROWSER_ID, &libname);
++			if (g_str_equal (libname, "default"))
++				done = gtk_show_uri (NULL, uri, 0, NULL);
++			g_free (libname);
+ 		}
+ 	}
+ 	
diff -Nru liferea-1.8.6/debian/patches/fix-crash-in-empty-launch-url liferea-1.8.6/debian/patches/fix-crash-in-empty-launch-url
--- liferea-1.8.6/debian/patches/fix-crash-in-empty-launch-url	1970-01-01 08:00:00.000000000 +0800
+++ liferea-1.8.6/debian/patches/fix-crash-in-empty-launch-url	2012-12-15 18:36:10.000000000 +0800
@@ -0,0 +1,37 @@
+Author: Matthias Maennich <matthias@maennich.net>
+Date: Wed, 15 Aug 2012 00:06:29 +0200
+Subject: [PATCH] fix crash in liferea_webkit_launch_url(...) for empty links
+ in feeds
+
+Description: in case of empty links in feeds liferea crashed with the
+following backtrace:
+  #0 in __strstr_sse42 () from /lib/libc.so.6
+  #1 in liferea_webkit_launch_url (scrollpane=<>, url=0x0) at webkit.c:515
+  #2 in itemlist_selection_changed (item=item@entry=<>) at itemlist.c:599
+
+this patch fixes the crash with showing the default itemview content
+instead of trying to launch the browser with the non-existing URL
+Reported-by: Matthias Maennich <matthias@maennich.net>
+Bug: http://sourceforge.net/tracker/index.php?func=detail&aid=3557513&group_id=87005&atid=581686
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=692272
+Last-Update: 2012-12-15
+--- a/src/itemlist.c
++++ b/src/itemlist.c
+@@ -599,8 +599,15 @@
+ 			if (node->loadItemLink) {
+ 				gchar* link = item_make_link (item);
+ 
+-				itemview_launch_URL (link, TRUE /* force internal */);
+-				g_free (link);
++				// in case of an empty link entry the above results in link==NULL
++				// so, only show the link if exists
++				if (link) {
++					itemview_launch_URL (link, TRUE /* force internal */);
++					g_free (link);
++				} else { // else show the normal itemview content
++					itemview_select_item(item);
++					itemview_update();
++				}
+ 			} else {
+ 				itemview_select_item (item);
+ 				itemview_update ();
diff -Nru liferea-1.8.6/debian/patches/fix-crash-when-dragging-feeds-outside-google-reader liferea-1.8.6/debian/patches/fix-crash-when-dragging-feeds-outside-google-reader
--- liferea-1.8.6/debian/patches/fix-crash-when-dragging-feeds-outside-google-reader	1970-01-01 08:00:00.000000000 +0800
+++ liferea-1.8.6/debian/patches/fix-crash-when-dragging-feeds-outside-google-reader	2012-12-15 18:36:15.000000000 +0800
@@ -0,0 +1,23 @@
+From: Lars Windolf <lars.lindner@gmail.com>
+Date: Mon, 30 Jul 2012 23:26:01 +0200
+Subject: [PATCH] Fixes SF #2855990: Crash when dragging Google Reader feeds outside Google Reader. This is now prevented. (reported by algnod)
+Origin: upstream, http://liferea.git.sourceforge.net/git/gitweb.cgi?p=liferea/liferea;a=commit;h=5f245fe87e8f32ff0e13c2e94addaf6032b806c4
+Bug: http://sourceforge.net/tracker/index.php?func=detail&aid=2855990&group_id=87005&atid=581684
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=692526
+Last-Updated: 2012-12-15
+--- a/src/ui/ui_dnd.c
++++ b/src/ui/ui_dnd.c
+@@ -116,6 +116,13 @@
+ 	if (gtk_tree_model_get_iter (GTK_TREE_MODEL (model), &iter, src_path)) {
+ 		gtk_tree_model_get (GTK_TREE_MODEL (model), &iter, FS_PTR, &sourceNode, -1);
+ 
++		g_assert (sourceNode);
++
++		/* Never drop into another node source as this arises to many problems
++		   (e.g. remote sync, different subscription type, e.g. SF #2855990) */
++		if (NODE_SOURCE_TYPE (targetNode) != NODE_SOURCE_TYPE (sourceNode))
++			return FALSE;
++
+ 		if (IS_FOLDER(sourceNode) && !(NODE_SOURCE_TYPE (targetNode)->capabilities & NODE_SOURCE_CAPABILITY_HIERARCHIC_FEEDLIST))
+ 			return FALSE;
+ 	}
diff -Nru liferea-1.8.6/debian/patches/fix-crash-when-online-status-changes liferea-1.8.6/debian/patches/fix-crash-when-online-status-changes
--- liferea-1.8.6/debian/patches/fix-crash-when-online-status-changes	1970-01-01 08:00:00.000000000 +0800
+++ liferea-1.8.6/debian/patches/fix-crash-when-online-status-changes	2012-12-15 18:36:22.000000000 +0800
@@ -0,0 +1,24 @@
+From: Yanko Kaneti <yaneti@declera.com>
+Date: Fri, 14 Sep 2012 16:13:00 +0300
+Subject: [PATCH] Fix crash when network online status changes
+Description: From Fedora bug
+https://bugzilla.redhat.com/show_bug.cgi?id=857348 :
+"liferea frequently crashes when manipulating htmlviews (opening/closing
+new tabs) while the network online status changes. This is caused
+because the signal notifying online status is not properly disconnected
+when the htmlview is removed."
+Origin: upstream, http://liferea.git.sourceforge.net/git/gitweb.cgi?p=liferea/liferea;a=commit;h=7c69af4fe8435b34cbf9e7f76cb2e44e985d37b5
+Bug: http://sourceforge.net/tracker/index.php?func=detail&aid=3567715&group_id=87005&atid=581686
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=692270
+Last-Update: 2012-12-15
+--- a/src/ui/liferea_htmlview.c
++++ b/src/ui/liferea_htmlview.c
+@@ -77,6 +77,8 @@
+ static void
+ liferea_htmlview_finalize (GObject *object)
+ {
++	g_signal_handlers_disconnect_by_data (network_monitor_get (), object);
++
+ 	G_OBJECT_CLASS (parent_class)->finalize (object);
+ }
+ 
diff -Nru liferea-1.8.6/debian/patches/fix-crash-when-removing-google-reader-folders liferea-1.8.6/debian/patches/fix-crash-when-removing-google-reader-folders
--- liferea-1.8.6/debian/patches/fix-crash-when-removing-google-reader-folders	1970-01-01 08:00:00.000000000 +0800
+++ liferea-1.8.6/debian/patches/fix-crash-when-removing-google-reader-folders	2012-12-15 19:00:43.000000000 +0800
@@ -0,0 +1,157 @@
+From: Lars Windolf <lars.lindner@gmail.com>
+Date: Fri, 5 Oct 2012 12:09:42 +0200
+Subject: [PATCH] Fixes SF #3572660: crash in google_source_remove_node (reported by Yanko Kaneti)
+Origin: upstream, http://liferea.git.sourceforge.net/git/gitweb.cgi?p=liferea/liferea;a=commit;h=878863cd0e02e89e461e5e47f02be38e57a4fe27
+Bug: http://sourceforge.net/tracker/index.php?func=detail&aid=3572660&group_id=87005&atid=581684
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=692525
+Last-Update: 2012-12-15
+--- a/src/fl_sources/default_source.c
++++ b/src/fl_sources/default_source.c
+@@ -210,6 +210,8 @@
+ 	.description		= "The default feed list source. Should never be added manually. If you see this then something went wrong!",
+ 	.capabilities		= NODE_SOURCE_CAPABILITY_IS_ROOT |
+ 				  NODE_SOURCE_CAPABILITY_HIERARCHIC_FEEDLIST |
++	                          NODE_SOURCE_CAPABILITY_ADD_FEED |
++	                          NODE_SOURCE_CAPABILITY_ADD_FOLDER |
+ 				  NODE_SOURCE_CAPABILITY_WRITABLE_FEEDLIST,
+ 	.source_type_init	= default_source_init,
+ 	.source_type_deinit	= default_source_deinit,
+--- a/src/fl_sources/node_source.h
++++ b/src/fl_sources/node_source.h
+@@ -50,11 +50,12 @@
+ 
+ enum {
+ 	NODE_SOURCE_CAPABILITY_IS_ROOT			= (1<<0),	/**< flag only for default feed list source */
+-	NODE_SOURCE_CAPABILITY_MULTI_INSTANCES		= (1<<1),	/**< allows multiple source instances */
+-	NODE_SOURCE_CAPABILITY_DYNAMIC_CREATION		= (1<<2),	/**< feed list source is user created */
+-	NODE_SOURCE_CAPABILITY_WRITABLE_FEEDLIST	= (1<<3),	/**< the feed list tree of the source can be changed */
+-	NODE_SOURCE_CAPABILITY_HIERARCHIC_FEEDLIST	= (1<<4),	/**< the feed list tree of the source can have hierarchic folders */
+-	NODE_SOURCE_CAPABILITY_ITEM_STATE_SYNC		= (1<<5)	/**< the item state can and should be sync'ed with remote */
++	NODE_SOURCE_CAPABILITY_DYNAMIC_CREATION		= (1<<1),	/**< feed list source is user created */
++	NODE_SOURCE_CAPABILITY_WRITABLE_FEEDLIST	= (1<<2),	/**< the feed list tree of the source can be changed */
++	NODE_SOURCE_CAPABILITY_ADD_FEED			= (1<<3),	/**< feeds can be added to the source */
++	NODE_SOURCE_CAPABILITY_ADD_FOLDER		= (1<<4),	/**< folders can be added to the source */
++	NODE_SOURCE_CAPABILITY_HIERARCHIC_FEEDLIST	= (1<<5),	/**< the feed list tree of the source can have hierarchic folders */
++	NODE_SOURCE_CAPABILITY_ITEM_STATE_SYNC		= (1<<6)	/**< the item state can and should be sync'ed with remote */
+ };
+ 
+ /** feed list node source type */
+--- a/src/node.c
++++ b/src/node.c
+@@ -494,6 +494,28 @@
+ 	return baseUrl;
+ }
+ 
++gboolean
++node_can_add_child_feed (nodePtr node)
++{
++	g_assert (node->source->root);
++
++	if (!(NODE_TYPE (node->source->root)->capabilities & NODE_CAPABILITY_ADD_CHILDS))
++		return FALSE;
++
++	return (NODE_SOURCE_TYPE (node)->capabilities & NODE_SOURCE_CAPABILITY_ADD_FEED);
++}
++
++gboolean
++node_can_add_child_folder (nodePtr node)
++{
++	g_assert (node->source->root);
++
++	if (!(NODE_TYPE (node->source->root)->capabilities & NODE_CAPABILITY_ADD_CHILDS))
++		return FALSE;
++
++	return (NODE_SOURCE_TYPE (node)->capabilities & NODE_SOURCE_CAPABILITY_ADD_FOLDER);
++}
++
+ /* node children iterating interface */
+ 
+ void
+--- a/src/node.h
++++ b/src/node.h
+@@ -355,6 +355,24 @@
+  */
+ const gchar * node_get_base_url(nodePtr node);
+ 
++/**
++ * Query wether a feed be added to the given node.
++ *
++ * @param node	the node
++ *
++ * @returns TRUE if a feed can be added
++ */
++gboolean node_can_add_child_feed (nodePtr node);
++
++/**
++ * Query wether a folder be added to the given node.
++ *
++ * @param node	the node
++ *
++ * @returns TRUE if a folder can be added
++ */
++gboolean node_can_add_child_folder (nodePtr node);
++
+ /* child nodes iterating interface */
+ 
+ typedef void 	(*nodeActionFunc)	(nodePtr node);
+--- a/src/ui/popup_menu.c
++++ b/src/ui/popup_menu.c
+@@ -262,14 +262,15 @@
+ ui_popup_node_menu (nodePtr node, gboolean validSelection, guint button, guint32 activate_time)
+ {
+ 	GtkWidget	*menu;
+-	gboolean	writeableFeedlist, isRoot, isHierarchic;
++	gboolean	writeableFeedlist, isRoot, isHierarchic, addChildren;
+ 
+ 	menu = gtk_menu_new ();
+ 	
+ 	if (node->parent) {
+ 		writeableFeedlist = NODE_SOURCE_TYPE (node->parent->source->root)->capabilities & NODE_SOURCE_CAPABILITY_WRITABLE_FEEDLIST;
+-		isRoot = NODE_SOURCE_TYPE (node->parent->source->root)->capabilities & NODE_SOURCE_CAPABILITY_IS_ROOT;
++		isRoot = NODE_SOURCE_TYPE (node->source->root)->capabilities & NODE_SOURCE_CAPABILITY_IS_ROOT;
+ 		isHierarchic = NODE_SOURCE_TYPE (node->parent->source->root)->capabilities & NODE_SOURCE_CAPABILITY_HIERARCHIC_FEEDLIST;
++		addChildren = NODE_TYPE (node->source->root)->capabilities & NODE_CAPABILITY_ADD_CHILDS;
+ 	} else {
+ 		/* if we have no parent then we have the root node... */
+ 		writeableFeedlist = TRUE;
+@@ -287,7 +288,7 @@
+ 	}
+ 
+ 	if (writeableFeedlist) {
+-		if (NODE_TYPE (node->source->root)->capabilities & NODE_CAPABILITY_ADD_CHILDS) {
++		if (addChildren) {
+ 			GtkWidget	*item;
+ 			GtkWidget	*submenu;
+ 
+@@ -295,9 +296,10 @@
+ 
+ 			item = ui_popup_add_menuitem (menu, _("_New"), NULL, NULL, NULL, 0);
+ 
+-			ui_popup_add_menuitem (submenu, _("New _Subscription..."), ui_popup_add_feed, NULL, NULL, 0);
++			if (node_can_add_child_feed (node))
++				ui_popup_add_menuitem (submenu, _("New _Subscription..."), ui_popup_add_feed, NULL, NULL, 0);
+ 			
+-			if (isHierarchic)
++			if (node_can_add_child_folder (node))
+ 				ui_popup_add_menuitem (submenu, _("New _Folder..."), ui_popup_add_folder, NULL, NULL, 0);
+ 				
+ 			if (isRoot) {
+@@ -309,7 +311,7 @@
+ 			gtk_menu_item_set_submenu (GTK_MENU_ITEM(item), submenu);
+ 		}
+ 		
+-		if (node->children) {
++		if (isRoot && node->children) {
+ 			gtk_menu_shell_append (GTK_MENU_SHELL(menu), gtk_separator_menu_item_new());
+ 			ui_popup_add_menuitem (menu, _("Sort Feeds"), ui_popup_sort_feeds, node, GTK_STOCK_SORT_ASCENDING, 0);
+ 		}
+--- a/src/fl_sources/google_source.c
++++ b/src/fl_sources/google_source.c
+@@ -360,6 +360,7 @@
+ 	   "present your Google Reader subscriptions, and will synchronize your feed list and reading lists."),
+ 	.capabilities        = NODE_SOURCE_CAPABILITY_DYNAMIC_CREATION | 
+ 	                       NODE_SOURCE_CAPABILITY_WRITABLE_FEEDLIST |
++	                       NODE_SOURCE_CAPABILITY_ADD_FEED |
+ 	                       NODE_SOURCE_CAPABILITY_ITEM_STATE_SYNC,
+ 	.source_type_init    = google_source_init,
+ 	.source_type_deinit  = google_source_deinit,
diff -Nru liferea-1.8.6/debian/patches/series liferea-1.8.6/debian/patches/series
--- liferea-1.8.6/debian/patches/series	2012-02-27 09:54:47.000000000 +0800
+++ liferea-1.8.6/debian/patches/series	2012-12-15 18:09:42.000000000 +0800
@@ -1,3 +1,8 @@
 www-browser
 debian-example-feeds
 libtool-dont-rearange-as-needed
+fix-browser-selections
+fix-crash-in-empty-launch-url
+fix-crash-when-dragging-feeds-outside-google-reader
+fix-crash-when-online-status-changes
+fix-crash-when-removing-google-reader-folders
diff -Nru liferea-1.8.6/debian/rules liferea-1.8.6/debian/rules
--- liferea-1.8.6/debian/rules	2012-02-27 09:54:47.000000000 +0800
+++ liferea-1.8.6/debian/rules	2012-12-15 19:36:20.000000000 +0800
@@ -2,6 +2,9 @@
 # Sample debian/rules that uses debhelper.
 # GNU copyright 1997 to 1999 by Joey Hess.
 
+export DEB_BUILD_MAINT_OPTIONS = hardening=+all
+DPKG_EXPORT_BUILDFLAGS = 1
+include /usr/share/dpkg/buildflags.mk
 CFLAGS += -g -O$(if $(findstring noopt,$(DEB_BUILD_OPTIONS)),0,2)
 LDFLAGS += "-Wl,--as-needed"
 export LIBS=-lX11 -lICE

Reply to: