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

Bug#688261: marked as done (unblock: bluefish/2.2.3-4)



Your message dated Sun, 23 Sep 2012 18:34:29 +0100
with message-id <1348421669.21568.30.camel@jacala.jungle.funky-badger.org>
and subject line Re: Bug#688261: unblock: bluefish/2.2.3-4
has caused the Debian Bug report #688261,
regarding unblock: bluefish/2.2.3-4
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
688261: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=688261
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Please unblock package bluefish

  * debian/patches/fix_segfault_blocksync.patch: Added.
    - Fix a segmentation fault in the block synchronization feature.
  * debian/patches/fix_segfault_scanner.patch: Added.
    - Fix segmentation faults in the language scanner feature.
  * debian/patches/series: Adjusted.

The patches fix two segmentation faults, which have only been reported upstream
via private mail. Therefor no public bug report references can be provided.

Please unblock the packages. debdiff is attached.

unblock bluefish/2.2.3-4

- -- System Information:
Debian Release: wheezy/sid
  APT prefers unstable
  APT policy: (850, 'unstable'), (700, 'testing'), (560, 'stable'), (110, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 3.2.0-3-amd64 (SMP w/2 CPU cores)
Locale: LANG=de_DE.utf8, LC_CTYPE=de_DE.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iEYEARECAAYFAlBbax4ACgkQm0bx+wiPa4w5ZACfYeGf6+4W0PFYAZmWcS5i/kMu
8lYAoLj0A7SnSi/CZqauGqNhsQiL8Xtk
=/v9G
-----END PGP SIGNATURE-----
diff -Nru bluefish-2.2.3/debian/changelog bluefish-2.2.3/debian/changelog
--- bluefish-2.2.3/debian/changelog	2012-07-13 00:30:21.000000000 +0200
+++ bluefish-2.2.3/debian/changelog	2012-09-10 00:15:16.000000000 +0200
@@ -1,3 +1,13 @@
+bluefish (2.2.3-4) unstable; urgency=low
+
+  * debian/patches/fix_segfault_blocksync.patch: Added.
+    - Fix a segmentation fault in the block synchronization feature.
+  * debian/patches/fix_segfault_scanner.patch: Added.
+    - Fix segmentation faults in the language scanner feature.
+  * debian/patches/series: Added.
+
+ -- Daniel Leidert <dleidert@debian.org>  Mon, 10 Sep 2012 00:15:13 +0200
+
 bluefish (2.2.3-3) unstable; urgency=low
 
   * debian/patches/bz679203_fix_segfault.patch: Added.
diff -Nru bluefish-2.2.3/debian/patches/fix_segfault_blocksync.patch bluefish-2.2.3/debian/patches/fix_segfault_blocksync.patch
--- bluefish-2.2.3/debian/patches/fix_segfault_blocksync.patch	1970-01-01 01:00:00.000000000 +0100
+++ bluefish-2.2.3/debian/patches/fix_segfault_blocksync.patch	2012-09-09 13:38:23.000000000 +0200
@@ -0,0 +1,133 @@
+Author: Olivier Sessink <oli4@users.sourceforge.net>
+Acked-By: Daniel Leidert <dleidert@debian.org>
+Description: Fixed the regular expression matching for blocksync. Since
+ dotmatchall was no longer enabled by default the synchronise block query
+ did no longer always work anymore. I've added that option to
+ snr3run_extern so it can be enabled by blocksync.
+Origin: http://bluefish.svn.sourceforge.net/viewvc/bluefish?view=revision&revision=7582
+
+--- a/src/blocksync.c
++++ b/src/blocksync.c
+@@ -274,7 +274,7 @@
+ 		DEBUG_MSG("searchpat=%s\n",searchpat);
+ 		g_free(tmp1);
+ 		g_free(tmp2);
+-		snr3_run_extern_replace(bsdialog->bfwin->current_document, searchpat, snr3scope_alldocs,snr3type_pcre,TRUE, bsdialog->allblock,FALSE);
++		snr3_run_extern_replace(bsdialog->bfwin->current_document, searchpat, snr3scope_alldocs,snr3type_pcre,TRUE, bsdialog->allblock,FALSE, TRUE);
+ 		g_free(searchpat);
+ 		
+ 		/* cleanup */
+--- a/src/file_dialogs.c
++++ b/src/file_dialogs.c
+@@ -709,7 +709,7 @@
+ 			author_tmp = g_strconcat("<meta name=\"author\" content=\"", realname, "\" ", NULL);
+ 			snr3_run_extern_replace(doc,
+ 									"<meta[ \t\n]+name[ \t\n]*=[ \t\n]*\"author\"[ \t\n]+content[ \t\n]*=[ \t\n]*\"[^\"]*\"[ \t\n]*",
+-									snr3scope_doc, snr3type_pcre, FALSE, author_tmp, FALSE);
++									snr3scope_doc, snr3type_pcre, FALSE, author_tmp, FALSE, FALSE);
+ 			g_free(author_tmp);
+ 		}
+ 	}
+@@ -743,7 +743,7 @@
+ 		date_tmp = g_strconcat("<meta name=\"date\" content=\"", isotime, "\" ", NULL);
+ 		snr3_run_extern_replace(doc,
+ 								"<meta[ \t\n]+name[ \t\n]*=[ \t\n]*\"date\"[ \t\n]+content[ \t\n]*=[ \t\n]*\"[^\"]*\"[ \t\n]*",
+-								snr3scope_doc, snr3type_pcre, FALSE, date_tmp, FALSE);
++								snr3scope_doc, snr3type_pcre, FALSE, date_tmp, FALSE, FALSE);
+ 		g_free(date_tmp);
+ 	}
+ 
+@@ -752,7 +752,7 @@
+ 		snr3_run_extern_replace(doc,
+ 								"<meta[ \t\n]+name[ \t\n]*=[ \t\n]*\"generator\"[ \t\n]+content[ \t\n]*=[ \t\n]*\"[^\"]*\"[ \t\n]*",
+ 								snr3scope_doc, snr3type_pcre, FALSE,
+-								"<meta name=\"generator\" content=\"Bluefish " VERSION "\" ", FALSE);
++								"<meta name=\"generator\" content=\"Bluefish " VERSION "\" ", FALSE, FALSE);
+ 	}
+ 
+ 	if (doc->uri)
+--- a/src/plugin_snippets/snippets_leaf_snr.c
++++ b/src/plugin_snippets/snippets_leaf_snr.c
+@@ -74,10 +74,11 @@
+ 	 * is_case_sens: #gint
+ 	 * replace_pattern: #gchar* to replace pattern.
+ 	 * unescape: #gint
++	 * dotmatchall: gboolean
+ 	 * */
+ 	DEBUG_MSG("snippets_snr_run_from_strings, useescapechars=%s, unescape=%d\n",useescapechars,unescape);
+ 	snr3_run_extern_replace(doc, (gchar *)searchpat, 
+-						scope,type, casesensnum, (gchar *)replacepat,unescape);
++						scope,type, casesensnum, (gchar *)replacepat,unescape, FALSE);
+ }
+ 
+ typedef struct {
+--- a/src/snr3.c
++++ b/src/snr3.c
+@@ -800,7 +800,7 @@
+ 		options |= G_REGEX_CASELESS;
+ 	if (s3run->dotmatchall)
+ 		options |= G_REGEX_DOTALL;
+-	
++	DEBUG_MSG("compile_regex, compiling %s\n", s3run->query);
+ 	s3run->regex = g_regex_new(s3run->query, options, G_REGEX_MATCH_NEWLINE_ANY, &gerror);
+ 	if (gerror) {
+ 		if (s3run->dialog) {
+@@ -846,6 +846,7 @@
+ 	
+ 	if (s3run->type == snr3type_pcre) {
+ 		if (!compile_regex(s3run)) {
++			DEBUG_MSG("update_snr3run, failed to compile query %s\n",s3run->query);
+ 			g_free(s3run->query);
+ 			s3run->query = NULL; /* mark query as unusable */
+ 			return -1;
+@@ -1754,25 +1755,29 @@
+ void
+ snr3_run_extern_replace(Tdocument * doc, const gchar * search_pattern, Tsnr3scope scope,
+ 							 Tsnr3type type, gboolean is_case_sens, const gchar * replace_pattern,
+-							 gboolean unescape) 
++							 gboolean unescape, gboolean dotmatchall) 
+ {
+ 	gint so,eo;
+ 	GList *tmplist;
+ 	Tsnr3run * s3run = snr3run_new(doc->bfwin, NULL);
+ 	snr3run_multiset(s3run, search_pattern, NULL, type,snr3replace_string,scope);
++	s3run->dotmatchall = dotmatchall;
+ 	s3run->replace = g_strdup(replace_pattern);
+ 	update_snr3run(s3run);
+ 	s3run->replaceall = TRUE;
+ 	
+ 	switch(s3run->scope) {
+ 		case snr3scope_doc:
++			DEBUG_MSG("snr3_run_extern_replace, run in doc\n");
+ 			extern_doc_backend(s3run, doc, 0, -1);
+ 		break;
+ 		case snr3scope_cursor:
++			DEBUG_MSG("snr3_run_extern_replace, run beyond cursor\n");
+ 			so = doc_get_cursor_position(doc);
+ 			extern_doc_backend(s3run, doc, so, -1);
+ 		break;
+ 		case snr3scope_selection:
++			DEBUG_MSG("snr3_run_extern_replace, run in selection\n");
+ 			if (doc_get_selection(doc, &so, &eo)) {
+ 				extern_doc_backend(s3run, doc, so, eo);
+ 			} else {
+@@ -1780,7 +1785,9 @@
+ 			}
+ 		break;
+ 		case snr3scope_alldocs:
++			DEBUG_MSG("snr3_run_extern_replace, run in all documents\n");
+ 			for (tmplist=g_list_first(s3run->bfwin->documentlist);tmplist;tmplist=g_list_next(tmplist)) {
++				DEBUG_MSG("snr3_run_extern_replace, all documents, doc=%p\n",tmplist->data);
+ 				extern_doc_backend(s3run, tmplist->data, 0, -1);
+ 			}
+ 		break;
+--- a/src/snr3.h
++++ b/src/snr3.h
+@@ -179,6 +179,6 @@
+ 
+ void snr3_run_extern_replace(Tdocument * doc, const gchar * search_pattern, Tsnr3scope scope,
+ 							 Tsnr3type type, gboolean is_case_sens, const gchar * replace_pattern,
+-							 gboolean unescape);
++							 gboolean unescape, gboolean dotmatchall);
+ 
+ #endif /* #define __SNR3_H_ */
diff -Nru bluefish-2.2.3/debian/patches/fix_segfault_scanner.patch bluefish-2.2.3/debian/patches/fix_segfault_scanner.patch
--- bluefish-2.2.3/debian/patches/fix_segfault_scanner.patch	1970-01-01 01:00:00.000000000 +0100
+++ bluefish-2.2.3/debian/patches/fix_segfault_scanner.patch	2012-09-09 13:38:23.000000000 +0200
@@ -0,0 +1,79 @@
+Author: Olivier Sessink <oli4@users.sourceforge.net>
+Acked-By: Daniel Leidert <dleidert@debian.org>
+Description: When starting a scan at the first position, if there
+ is a scancache the 'nextfound' variable should be initialized.
+ .
+ Fix a cornercase when rescanning changed text, in which the area
+ that needs scanning is incorrectly not resized. This was easy to
+ reproduce with the python language file when entering new strings
+ into the file.
+Origin: http://bluefish.svn.sourceforge.net/viewvc/bluefish/trunk/bluefish/src/bftextview2_scanner.c?r1=7588&r2=7590&pathrev=7590
+
+--- a/src/bftextview2_scanner.c
++++ b/src/bftextview2_scanner.c
+@@ -258,7 +258,7 @@
+ {
+ 	Tfound *tmpfound1 = *found;
+ 	GSequenceIter *tmpsiter1 = *siter;
+-	guint invalidoffset = 0;
++	guint invalidoffset;
+ 	gint blockstackcount = 0, contextstackcount = 0;
+ 	
+ 	if (!tmpfound1)
+@@ -267,7 +267,8 @@
+ 	*found = get_foundcache_next(btv, siter);
+ 	DBG_SCANCACHE("remove_cache_entry, STARTED, remove %p at offset %d and any children, numblockchange=%d, numcontextchange=%d\n", tmpfound1,
+ 				  tmpfound1->charoffset_o, tmpfound1->numblockchange, tmpfound1->numcontextchange);
+-		/* if this entry pops blocks or contexts, mark the ends of those as undefined */
++	invalidoffset = tmpfound1->charoffset_o;
++	/* if this entry pops blocks or contexts, mark the ends of those as undefined */
+ 	if (tmpfound1->numblockchange < 0) {
+ 		Tfoundblock *tmpfblock = tmpfound1->fblock;
+ 		DBG_SCANCACHE("remove_cache_entry, found %p pops blocks, mark end of %d fblock's as undefined, fblock=%p\n",
+@@ -1253,8 +1254,9 @@
+ #endif
+ 	iter = mstart = scanning.start;
+ 	if (gtk_text_iter_is_start(&scanning.start)) {
++		DBG_SCANNING("start scanning at start iter\n");
+ 		scanning.siter = g_sequence_get_begin_iter(btv->scancache.foundcaches);
+-		scanning.nextfound = NULL;
++		scanning.nextfound = get_foundcache_first(btv, &scanning.siter);
+ 		scanning.curfcontext = NULL;
+ 		scanning.curfblock = NULL;
+ 		reconstruction_o = 0;
+@@ -1262,7 +1264,7 @@
+ 		/* reconstruct the context stack and the block stack */
+ 		reconstruction_o = reconstruct_scanning(btv, &iter, &scanning);
+ 		pos = 0;
+-		DBG_SCANNING("reconstructed stacks, context=%d, startstate=%d\n", scanning.context, pos);
++		DBG_SCANNING("reconstructed stacks, context=%d, startstate=%d, nextfound=%p\n", scanning.context, pos, scanning.nextfound);
+ 		/* now move the start position either to the start of the line, or to the position 
+ 		   where the stack was reconstructed, the largest offset */
+ 		gtk_text_buffer_get_iter_at_offset(btv->buffer, &iter, reconstruction_o);
+@@ -1672,16 +1674,24 @@
+ 		if (!found)
+ 			break;
+ 		
+-		if (found->charoffset_o <= prevfound_o)
++		if (found->charoffset_o < prevfound_o) {
+ 			g_warning("previous found had offset %d, the next found has offset %d, not ordered correctly?!?!!\n",found->charoffset_o, prevfound_o);
++		} else if (found->charoffset_o == prevfound_o) {
++			g_warning("previous found and the next found have offset %d, duplicate!!\n",found->charoffset_o);
++		}
+ 		prevfound_o = found->charoffset_o;
+ 		if (found->numcontextchange > 0) {
+ 			/* push context */
+ 			if (found->fcontext->parentfcontext != g_queue_peek_head(&contexts)) {
+-				g_warning("pushing context at %d:%d, parent contexts at %d:%d do not match!\n"
++				if (found->fcontext->parentfcontext == NULL) {
++					g_warning("pushing context at %d:%d on top of non-NULL stack, but parent contexts is NULL!?\n"
++									,found->fcontext->start_o, found->fcontext->end_o);
++				} else {
++					g_warning("pushing context at %d:%d, parent contexts at %d:%d do not match!\n"
+ 									,found->fcontext->start_o, found->fcontext->end_o
+ 									,((Tfoundcontext *)found->fcontext->parentfcontext)->start_o
+ 									,((Tfoundcontext *)found->fcontext->parentfcontext)->end_o);
++				}
+ 			}
+ 			g_queue_push_head(&contexts, found->fcontext);
+ 		} else {
diff -Nru bluefish-2.2.3/debian/patches/series bluefish-2.2.3/debian/patches/series
--- bluefish-2.2.3/debian/patches/series	2012-07-13 00:23:50.000000000 +0200
+++ bluefish-2.2.3/debian/patches/series	2012-09-09 13:38:23.000000000 +0200
@@ -1,2 +1,4 @@
+fix_segfault_scanner.patch
+fix_segfault_blocksync.patch
 translation_updates.patch
 bz679203_fix_segfault.patch

--- End Message ---
--- Begin Message ---
On Thu, 2012-09-20 at 21:14 +0200, Daniel Leidert wrote:
> Please unblock package bluefish
> 
>   * debian/patches/fix_segfault_blocksync.patch: Added.
>     - Fix a segmentation fault in the block synchronization feature.
>   * debian/patches/fix_segfault_scanner.patch: Added.
>     - Fix segmentation faults in the language scanner feature.
>   * debian/patches/series: Adjusted.

Unblocked; thanks.

Regards,

Adam

--- End Message ---

Reply to: