Your message dated Sat, 13 Sep 2014 11:34:01 +0000
with message-id <[email protected]>
and subject line Bug#533081: fixed in scribus 1.4.4+dfsg1-1
has caused the Debian Bug report #533081,
regarding uses internal libhyphen and hyphen dicts
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 [email protected]
immediately.)


-- 
533081: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=533081
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: scribus
Version: 1.3.3.13.dfsg~svn20081228-2.1
Severity: important
Tags: patch

(This also would fix #410079 which IMHO *IS* serious)
(Ccing Caolan McNamara from RedHat, which pointed me to it, thanks)

Hi,

scribus uses internal hyphen library although it's packaged
in Debian for long.

And it also ships all its dicts internally while many are packages
separately (after all, it's the same format as the OOo ones [1]).

Unfortunately, when just symlinking dicts/ to /usr/share/myspell/dicts [2]

I have cooked up a preliminary patch nevertheless, but the segfault is
*not* fixed.

Grüße/Regards,

René
-- 
 .''`.  René Engelhard -- Debian GNU/Linux Developer
 : :' : http://www.debian.org | http://people.debian.org/~rene/
 `. `'  [email protected] | GnuPG-Key ID: 248AEB73
   `-   Fingerprint: 41FA F208 28D4 7CA5 19BB  7AD9 F859 90B0 248A EB73

diff -u scribus-1.3.3.13.dfsg~svn20081228/debian/control scribus-1.3.3.13.dfsg~svn20081228/debian/control
--- scribus-1.3.3.13.dfsg~svn20081228/debian/control
+++ scribus-1.3.3.13.dfsg~svn20081228/debian/control
@@ -2,7 +2,7 @@
 Section: graphics
 Priority: optional
 Maintainer: Oleksandr Moskalenko <[email protected]>
-Build-Depends: debhelper (>= 5), cmake (>= 2.4.3), gcc (>=3.3.5), libqt3-mt-dev (>= 3.3.4), libart-2.0-dev, zlib1g-dev, liblcms1-dev (>= 1.13), libtiff4-dev, libcups2-dev | libcupsys2-dev, libxml2-dev (>= 2.6.16), dpatch, gettext, python-all-dev
+Build-Depends: debhelper (>= 5), cmake (>= 2.4.3), gcc (>=3.3.5), libqt3-mt-dev (>= 3.3.4), libart-2.0-dev, zlib1g-dev, liblcms1-dev (>= 1.13), libtiff4-dev, libcups2-dev | libcupsys2-dev, libxml2-dev (>= 2.6.16), dpatch, gettext, python-all-dev, libhyphen-dev
 Standards-Version: 3.8.0
 
 Package: scribus
diff -u scribus-1.3.3.13.dfsg~svn20081228/debian/rules scribus-1.3.3.13.dfsg~svn20081228/debian/rules
--- scribus-1.3.3.13.dfsg~svn20081228/debian/rules
+++ scribus-1.3.3.13.dfsg~svn20081228/debian/rules
@@ -110,6 +110,8 @@
 	chmod 755 $(INSTALL_DIR)/usr/share/scribus/samples/*.py
 	install -m644 debian/scribus.lintian $(INSTALL_DIR)/usr/share/lintian/overrides/scribus
 	install -m644 scribus.desktop $(INSTALL_DIR)/usr/share/applications
+	cd $(INSTALL_DIR)/usr/share/scribus && \
+		rm -rf dicts && ln -s /usr/share/myspell/dicts dicts
 	touch install-stamp
 
 
diff -u scribus-1.3.3.13.dfsg~svn20081228/debian/patches/00list scribus-1.3.3.13.dfsg~svn20081228/debian/patches/00list
--- scribus-1.3.3.13.dfsg~svn20081228/debian/patches/00list
+++ scribus-1.3.3.13.dfsg~svn20081228/debian/patches/00list
@@ -3,0 +4 @@
+04_system_hyphen.dpatch
only in patch2:
unchanged:
--- scribus-1.3.3.13.dfsg~svn20081228.orig/debian/patches/04_system_hyphen.dpatch
+++ scribus-1.3.3.13.dfsg~svn20081228/debian/patches/04_system_hyphen.dpatch
@@ -0,0 +1,765 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_system_hyphen.dpatch by Rene Engelhard <[email protected]>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
+diff -urNad scribus-1.3.3.13.dfsg~svn20081228~/scribus/CMakeLists.txt scribus-1.3.3.13.dfsg~svn20081228/scribus/CMakeLists.txt
+--- scribus-1.3.3.13.dfsg~svn20081228~/scribus/CMakeLists.txt	2009-06-14 16:02:24.000000000 +0200
++++ scribus-1.3.3.13.dfsg~svn20081228/scribus/CMakeLists.txt	2009-06-14 16:02:26.000000000 +0200
+@@ -254,10 +254,8 @@
+ gtwriter.cpp
+ guidemanager.cpp
+ helpbrowser.cpp
+-hnjalloc.c
+ hruler.cpp
+ hyask.cpp
+-hyphen.c
+ hyphenator.cpp
+ hysettings.cpp
+ imageinfodialog.cpp
+@@ -428,6 +426,7 @@
+ TARGET_LINK_LIBRARIES(${EXE_NAME}
+ ${SCRIBUS_TEXT_LIB}
+ ${SCRIBUS_PIXBUF_LIB}
++-lhyphen
+ )
+ 
+ IF(RENDER_LIB STREQUAL "LIBART")
+diff -urNad scribus-1.3.3.13.dfsg~svn20081228~/scribus/hnjalloc.c scribus-1.3.3.13.dfsg~svn20081228/scribus/hnjalloc.c
+--- scribus-1.3.3.13.dfsg~svn20081228~/scribus/hnjalloc.c	2006-04-05 22:15:37.000000000 +0200
++++ scribus-1.3.3.13.dfsg~svn20081228/scribus/hnjalloc.c	1970-01-01 01:00:00.000000000 +0100
+@@ -1,72 +0,0 @@
+-/* LibHnj is dual licensed under LGPL and MPL. Boilerplate for both
+- * licenses follows.
+- */
+-
+-/* LibHnj - a library for high quality hyphenation and justification
+- * Copyright (C) 1998 Raph Levien
+- *
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Library General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This library is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * Library General Public License for more details.
+- *
+- * You should have received a copy of the GNU Library General Public
+- * License along with this library; if not, write to the 
+- * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 
+- * Boston, MA  02111-1307  USA.
+-*/
+-
+-/*
+- * The contents of this file are subject to the Mozilla Public License
+- * Version 1.0 (the "MPL"); you may not use this file except in
+- * compliance with the MPL.  You may obtain a copy of the MPL at
+- * http://www.mozilla.org/MPL/
+- *
+- * Software distributed under the MPL is distributed on an "AS IS" basis,
+- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the MPL
+- * for the specific language governing rights and limitations under the
+- * MPL.
+- *
+- */
+-/* wrappers for malloc */
+-
+-#include <stdlib.h>
+-#include <stdio.h>
+-
+-void *
+-hnj_malloc (int size)
+-{
+-  void *p;
+-
+-  p = malloc (size);
+-  if (p == NULL)
+-    {
+-      fprintf (stderr, "can't allocate %d bytes\n", size);
+-      exit (1);
+-    }
+-  return p;
+-}
+-
+-void *
+-hnj_realloc (void *p, int size)
+-{
+-  p = realloc (p, size);
+-  if (p == NULL)
+-    {
+-      fprintf (stderr, "can't allocate %d bytes\n", size);
+-      exit (1);
+-    }
+-  return p;
+-}
+-
+-void
+-hnj_free (void *p)
+-{
+-  free (p);
+-}
+-
+diff -urNad scribus-1.3.3.13.dfsg~svn20081228~/scribus/hnjalloc.h scribus-1.3.3.13.dfsg~svn20081228/scribus/hnjalloc.h
+--- scribus-1.3.3.13.dfsg~svn20081228~/scribus/hnjalloc.h	2006-01-22 23:42:17.000000000 +0100
++++ scribus-1.3.3.13.dfsg~svn20081228/scribus/hnjalloc.h	1970-01-01 01:00:00.000000000 +0100
+@@ -1,52 +0,0 @@
+-/*
+-For general Scribus (>=1.3.2) copyright and licensing information please refer
+-to the COPYING file provided with the program. Following this notice may exist
+-a copyright and/or license notice that predates the release of Scribus 1.3.2
+-for which a new license (GPL+exception) is in place.
+-*/
+-/* LibHnj is dual licensed under LGPL and MPL. Boilerplate for both
+- * licenses follows.
+- */
+-
+-/* LibHnj - a library for high quality hyphenation and justification
+- * Copyright (C) 1998 Raph Levien
+- *
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Library General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This library is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * Library General Public License for more details.
+- *
+- * You should have received a copy of the GNU Library General Public
+- * License along with this library; if not, write to the 
+- * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 
+- * Boston, MA  02111-1307  USA.
+-*/
+-
+-/*
+- * The contents of this file are subject to the Mozilla Public License
+- * Version 1.0 (the "MPL"); you may not use this file except in
+- * compliance with the MPL.  You may obtain a copy of the MPL at
+- * http://www.mozilla.org/MPL/
+- *
+- * Software distributed under the MPL is distributed on an "AS IS" basis,
+- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the MPL
+- * for the specific language governing rights and limitations under the
+- * MPL.
+- *
+- */
+-/* wrappers for malloc */
+-
+-void *
+-hnj_malloc (int size);
+-
+-void *
+-hnj_realloc (void *p, int size);
+-
+-void
+-hnj_free (void *p);
+-
+diff -urNad scribus-1.3.3.13.dfsg~svn20081228~/scribus/hyphen.c scribus-1.3.3.13.dfsg~svn20081228/scribus/hyphen.c
+--- scribus-1.3.3.13.dfsg~svn20081228~/scribus/hyphen.c	2006-04-05 22:15:37.000000000 +0200
++++ scribus-1.3.3.13.dfsg~svn20081228/scribus/hyphen.c	1970-01-01 01:00:00.000000000 +0100
+@@ -1,501 +0,0 @@
+-/* LibHnj is dual licensed under LGPL and MPL. Boilerplate for both
+- * licenses follows.
+- */
+-
+-/* LibHnj - a library for high quality hyphenation and justification
+- * Copyright (C) 1998 Raph Levien, 
+- * 	     (C) 2001 ALTLinux, Moscow (http://www.alt-linux.org), 
+- *           (C) 2001 Peter Novodvorsky ([email protected])
+- *
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Library General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This library is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * Library General Public License for more details.
+- *
+- * You should have received a copy of the GNU Library General Public
+- * License along with this library; if not, write to the 
+- * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 
+- * Boston, MA  02111-1307  USA.
+-*/
+-
+-/*
+- * The contents of this file are subject to the Mozilla Public License
+- * Version 1.0 (the "MPL"); you may not use this file except in
+- * compliance with the MPL.  You may obtain a copy of the MPL at
+- * http://www.mozilla.org/MPL/
+- *
+- * Software distributed under the MPL is distributed on an "AS IS" basis,
+- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the MPL
+- * for the specific language governing rights and limitations under the
+- * MPL.
+- *
+- */
+-#include <stdlib.h> /* for NULL, malloc */
+-#include <stdio.h>  /* for fprintf */
+-#include <string.h> /* for strdup */
+-
+-#ifdef UNX
+-#include <unistd.h> /* for exit */
+-#endif
+-
+-#define noVERBOSE
+-
+-#include "hnjalloc.h"
+-#include "hyphen.h"
+-
+-static char *
+-hnj_strdup (const char *s)
+-{
+-  char *new;
+-  int l;
+-
+-  l = strlen (s);
+-  new = hnj_malloc (l + 1);
+-  memcpy (new, s, l);
+-  new[l] = 0;
+-  return new;
+-}
+-
+-/* a little bit of a hash table implementation. This simply maps strings
+-   to state numbers */
+-
+-typedef struct _HashTab HashTab;
+-typedef struct _HashEntry HashEntry;
+-
+-/* A cheap, but effective, hack. */
+-#define HASH_SIZE 31627
+-
+-struct _HashTab {
+-  HashEntry *entries[HASH_SIZE];
+-};
+-
+-struct _HashEntry {
+-  HashEntry *next;
+-  char *key;
+-  int val;
+-};
+-
+-/* a char* hash function from ASU - adapted from Gtk+ */
+-static unsigned int
+-hnj_string_hash (const char *s)
+-{
+-  const char *p;
+-  unsigned int h=0, g;
+-
+-  for(p = s; *p != '\0'; p += 1) {
+-    h = ( h << 4 ) + *p;
+-    if ( ( g = h & 0xf0000000 ) ) {
+-      h = h ^ (g >> 24);
+-      h = h ^ g;
+-    }
+-  }
+-  return h /* % M */;
+-}
+-
+-static HashTab *
+-hnj_hash_new (void)
+-{
+-  HashTab *hashtab;
+-  int i;
+-
+-  hashtab = hnj_malloc (sizeof(HashTab));
+-  for (i = 0; i < HASH_SIZE; i++)
+-    hashtab->entries[i] = NULL;
+-
+-  return hashtab;
+-}
+-
+-static void
+-hnj_hash_free (HashTab *hashtab)
+-{
+-  int i;
+-  HashEntry *e, *next;
+-
+-  for (i = 0; i < HASH_SIZE; i++)
+-    for (e = hashtab->entries[i]; e; e = next)
+-      {
+-	next = e->next;
+-	hnj_free (e->key);
+-	hnj_free (e);
+-      }
+-
+-  hnj_free (hashtab);
+-}
+-
+-/* assumes that key is not already present! */
+-static void
+-hnj_hash_insert (HashTab *hashtab, const char *key, int val)
+-{
+-  int i;
+-  HashEntry *e;
+-
+-  i = hnj_string_hash (key) % HASH_SIZE;
+-  e = hnj_malloc (sizeof(HashEntry));
+-  e->next = hashtab->entries[i];
+-  e->key = hnj_strdup (key);
+-  e->val = val;
+-  hashtab->entries[i] = e;
+-}
+-
+-/* return val if found, otherwise -1 */
+-static int
+-hnj_hash_lookup (HashTab *hashtab, const char *key)
+-{
+-  int i;
+-  HashEntry *e;
+-
+-  i = hnj_string_hash (key) % HASH_SIZE;
+-  for (e = hashtab->entries[i]; e; e = e->next)
+-    if (!strcmp (key, e->key))
+-      return e->val;
+-  return -1;
+-}
+-
+-/* Get the state number, allocating a new state if necessary. */
+-static int
+-hnj_get_state (HyphenDict *dict, HashTab *hashtab, const char *string)
+-{
+-  int state_num;
+-
+-  state_num = hnj_hash_lookup (hashtab, string);
+-
+-  if (state_num >= 0)
+-    return state_num;
+-
+-  hnj_hash_insert (hashtab, string, dict->num_states);
+-  /* predicate is true if dict->num_states is a power of two */
+-  if (!(dict->num_states & (dict->num_states - 1)))
+-    {
+-      dict->states = hnj_realloc (dict->states,
+-				  (dict->num_states << 1) *
+-				  sizeof(HyphenState));
+-    }
+-  dict->states[dict->num_states].match = NULL;
+-  dict->states[dict->num_states].fallback_state = -1;
+-  dict->states[dict->num_states].num_trans = 0;
+-  dict->states[dict->num_states].trans = NULL;
+-  return dict->num_states++;
+-}
+-
+-/* add a transition from state1 to state2 through ch - assumes that the
+-   transition does not already exist */
+-static void
+-hnj_add_trans (HyphenDict *dict, int state1, int state2, char ch)
+-{
+-  int num_trans;
+-
+-  num_trans = dict->states[state1].num_trans;
+-  if (num_trans == 0)
+-    {
+-      dict->states[state1].trans = hnj_malloc (sizeof(HyphenTrans));
+-    }
+-  else if (!(num_trans & (num_trans - 1)))
+-    {
+-      dict->states[state1].trans = hnj_realloc (dict->states[state1].trans,
+-						(num_trans << 1) *
+-						sizeof(HyphenTrans));
+-    }
+-  dict->states[state1].trans[num_trans].ch = ch;
+-  dict->states[state1].trans[num_trans].new_state = state2;
+-  dict->states[state1].num_trans++;
+-}
+-
+-#ifdef VERBOSE
+-HashTab *global;
+-
+-static char *
+-get_state_str (int state)
+-{
+-  int i;
+-  HashEntry *e;
+-
+-  for (i = 0; i < HASH_SIZE; i++)
+-    for (e = global->entries[i]; e; e = e->next)
+-      if (e->val == state)
+-	return e->key;
+-  return NULL;
+-}
+-#endif
+-
+-HyphenDict *
+-hnj_hyphen_load (const char *fn)
+-{
+-  HyphenDict *dict;
+-  HashTab *hashtab;
+-  FILE *f;
+-  char buf[80];
+-  char word[80];
+-  char pattern[80];
+-  int state_num, last_state;
+-  int i, j;
+-  char ch;
+-  int found;
+-  HashEntry *e;
+-
+-  f = fopen (fn, "r");
+-  if (f == NULL)
+-    return NULL;
+-
+-  hashtab = hnj_hash_new ();
+-#ifdef VERBOSE
+-  global = hashtab;
+-#endif
+-  hnj_hash_insert (hashtab, "", 0);
+-
+-  dict = hnj_malloc (sizeof(HyphenDict));
+-  dict->num_states = 1;
+-  dict->states = hnj_malloc (sizeof(HyphenState));
+-  dict->states[0].match = NULL;
+-  dict->states[0].fallback_state = -1;
+-  dict->states[0].num_trans = 0;
+-  dict->states[0].trans = NULL;
+-
+-  /* read in character set info */
+-  for (i=0;i<MAX_NAME;i++) dict->cset[i]= 0;
+-  fgets(dict->cset,  sizeof(dict->cset),f);
+-  for (i=0;i<MAX_NAME;i++)
+-    if ((dict->cset[i] == '\r') || (dict->cset[i] == '\n'))
+-        dict->cset[i] = 0;
+-
+-  while (fgets (buf, sizeof(buf), f) != NULL)
+-    {
+-      if (buf[0] != '%')
+-	{
+-	  j = 0;
+-	  pattern[j] = '0';
+-	  for (i = 0; ((buf[i] > ' ') || (buf[i] < 0)); i++)
+-	    {
+-	      if (buf[i] >= '0' && buf[i] <= '9')
+-		pattern[j] = buf[i];
+-	      else
+-		{
+-		  word[j] = buf[i];
+-		  pattern[++j] = '0';
+-		}
+-	    }
+-	  word[j] = '\0';
+-	  pattern[j + 1] = '\0';
+-
+-	  /* Optimize away leading zeroes */
+-	  for (i = 0; pattern[i] == '0'; i++);
+-
+-#ifdef VERBOSE
+-	  printf ("word %s pattern %s, j = %d\n", word, pattern + i, j);
+-#endif
+-	  found = hnj_hash_lookup (hashtab, word);
+-
+-	  state_num = hnj_get_state (dict, hashtab, word);
+-	  dict->states[state_num].match = hnj_strdup (pattern + i);
+-
+-	  /* now, put in the prefix transitions */
+-	  for (; found < 0 ;j--)
+-	    {
+-	      last_state = state_num;
+-	      ch = word[j - 1];
+-	      word[j - 1] = '\0';
+-	      found = hnj_hash_lookup (hashtab, word);
+-	      state_num = hnj_get_state (dict, hashtab, word);
+-	      hnj_add_trans (dict, state_num, last_state, ch);
+-	    }
+-	}
+-    }
+-
+-  /* Could do unioning of matches here (instead of the preprocessor script).
+-     If we did, the pseudocode would look something like this:
+-
+-     foreach state in the hash table
+-        foreach i = [1..length(state) - 1]
+-           state to check is substr (state, i)
+-           look it up
+-           if found, and if there is a match, union the match in.
+-
+-     It's also possible to avoid the quadratic blowup by doing the
+-     search in order of increasing state string sizes - then you
+-     can break the loop after finding the first match.
+-
+-     This step should be optional in any case - if there is a
+-     preprocessed rule table, it's always faster to use that.
+-
+-*/
+-
+-  /* put in the fallback states */
+-  for (i = 0; i < HASH_SIZE; i++)
+-    for (e = hashtab->entries[i]; e; e = e->next)
+-      {
+-/*	for (j = 1; 1; j++) */
+-	for (j = 1; *(e->key); j++)
+-	  {
+-	    state_num = hnj_hash_lookup (hashtab, e->key + j);
+-	    if (state_num >= 0)
+-	      break;
+-	  }
+-        /* KBH: FIXME state 0 fallback_state should always be -1? */
+-	if (e->val) 
+-	  dict->states[e->val].fallback_state = state_num;
+-      }
+-#ifdef VERBOSE
+-  for (i = 0; i < HASH_SIZE; i++)
+-    for (e = hashtab->entries[i]; e; e = e->next)
+-      {
+-	printf ("%d string %s state %d, fallback=%d\n", i, e->key, e->val,
+-		dict->states[e->val].fallback_state);
+-	for (j = 0; j < dict->states[e->val].num_trans; j++)
+-	  printf (" %c->%d\n", dict->states[e->val].trans[j].ch,
+-		  dict->states[e->val].trans[j].new_state);
+-      }
+-#endif
+-
+-#ifndef VERBOSE
+-  hnj_hash_free (hashtab);
+-#endif
+-  fclose(f);
+-  return dict;
+-}
+-
+-void hnj_hyphen_free (HyphenDict *dict)
+-{
+-  int state_num;
+-  HyphenState *hstate;
+-
+-  for (state_num = 0; state_num < dict->num_states; state_num++)
+-    {
+-      hstate = &dict->states[state_num];
+-      if (hstate->match)
+-	hnj_free (hstate->match);
+-      if (hstate->trans)
+-	hnj_free (hstate->trans);
+-    }
+-
+-  hnj_free (dict->states);
+-
+-  hnj_free (dict);
+-}
+-
+-#define MAX_WORD 256
+-
+-int hnj_hyphen_hyphenate (HyphenDict *dict,
+-			   const char *word, int word_size,
+-			   char *hyphens)
+-{
+-  char prep_word_buf[MAX_WORD];
+-  char *prep_word;
+-  int i, j, k;
+-  int state;
+-  char ch;
+-  HyphenState *hstate;
+-  char *match;
+-  int offset;
+-
+-  if (word_size + 3 < MAX_WORD)
+-    prep_word = prep_word_buf;
+-  else
+-    prep_word = hnj_malloc (word_size + 3);
+-
+-  j = 0;
+-  prep_word[j++] = '.';
+-  
+-  for (i = 0; i < word_size; i++)
+-      prep_word[j++] = word[i];
+-      
+-  for (i = 0; i < j; i++)                                                       
+-    hyphens[i] = '0';    
+-  
+-  prep_word[j++] = '.';
+-
+-  prep_word[j] = '\0';
+-#ifdef VERBOSE
+-  printf ("prep_word = %s\n", prep_word);
+-#endif
+-
+-  /* now, run the finite state machine */
+-  state = 0;
+-  for (i = 0; i < j; i++)
+-    {
+-      ch = prep_word[i];
+-      for (;;)
+-	{
+-
+-	  if (state == -1) {
+-            /* return 1;
+-	     KBH: FIXME shouldn't this be as follows? */
+-            state = 0;
+-            goto try_next_letter;
+-          }          
+-
+-#ifdef VERBOSE
+-	  char *state_str;
+-	  state_str = get_state_str (state);
+-
+-	  for (k = 0; k < i - strlen (state_str); k++)
+-	    putchar (' ');
+-	  printf ("%s", state_str);
+-#endif
+-
+-	  hstate = &dict->states[state];
+-	  for (k = 0; k < hstate->num_trans; k++)
+-	    if (hstate->trans[k].ch == ch)
+-	      {
+-		state = hstate->trans[k].new_state;
+-		goto found_state;
+-	      }
+-	  state = hstate->fallback_state;
+-#ifdef VERBOSE
+-	  printf (" falling back, fallback_state %d\n", state);
+-#endif
+-	}
+-    found_state:
+-#ifdef VERBOSE
+-      printf ("found state %d\n",state);
+-#endif
+-      /* Additional optimization is possible here - especially,
+-	 elimination of trailing zeroes from the match. Leading zeroes
+-	 have already been optimized. */
+-      match = dict->states[state].match;
+-      if (match)
+-	{
+-	  offset = i + 1 - strlen (match);
+-#ifdef VERBOSE
+-	  for (k = 0; k < offset; k++)
+-	    putchar (' ');
+-	  printf ("%s\n", match);
+-#endif
+-	  /* This is a linear search because I tried a binary search and
+-	     found it to be just a teeny bit slower. */
+-	  for (k = 0; match[k]; k++)
+-	    if (hyphens[offset + k] < match[k])
+-	      hyphens[offset + k] = match[k];
+-	}
+-
+-      /* KBH: we need this to make sure we keep looking in a word
+-       for patterns even if the current character is not known in state 0
+-       since patterns for hyphenation may occur anywhere in the word */
+-      try_next_letter: ;
+-
+-    }
+-#ifdef VERBOSE
+-  for (i = 0; i < j; i++)
+-    putchar (hyphens[i]);
+-  putchar ('\n');
+-#endif
+-
+-  for (i = 0; i < j - 4; i++)
+-#if 0
+-    if (hyphens[i + 1] & 1)
+-      hyphens[i] = '-';
+-#else
+-    hyphens[i] = hyphens[i + 1];
+-#endif
+-  hyphens[0] = '0';
+-  for (; i < word_size; i++)
+-    hyphens[i] = '0';
+-  hyphens[word_size] = '\0';
+-
+-  if (prep_word != prep_word_buf)
+-    hnj_free (prep_word);
+-  return 0;    
+-}
+diff -urNad scribus-1.3.3.13.dfsg~svn20081228~/scribus/hyphen.h scribus-1.3.3.13.dfsg~svn20081228/scribus/hyphen.h
+--- scribus-1.3.3.13.dfsg~svn20081228~/scribus/hyphen.h	2006-01-22 23:42:17.000000000 +0100
++++ scribus-1.3.3.13.dfsg~svn20081228/scribus/hyphen.h	1970-01-01 01:00:00.000000000 +0100
+@@ -1,83 +0,0 @@
+-/*
+-For general Scribus (>=1.3.2) copyright and licensing information please refer
+-to the COPYING file provided with the program. Following this notice may exist
+-a copyright and/or license notice that predates the release of Scribus 1.3.2
+-for which a new license (GPL+exception) is in place.
+-*/
+-/* LibHnj is dual licensed under LGPL and MPL. Boilerplate for both
+- * licenses follows.
+- */
+-
+-/* LibHnj - a library for high quality hyphenation and justification
+- * Copyright (C) 1998 Raph Levien, (C) 2001 ALTLinux, Moscow
+- *
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Library General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This library is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * Library General Public License for more details.
+- *
+- * You should have received a copy of the GNU Library General Public
+- * License along with this library; if not, write to the 
+- * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 
+- * Boston, MA  02111-1307  USA.
+-*/
+-
+-/*
+- * The contents of this file are subject to the Mozilla Public License
+- * Version 1.0 (the "MPL"); you may not use this file except in
+- * compliance with the MPL.  You may obtain a copy of the MPL at
+- * http://www.mozilla.org/MPL/
+- *
+- * Software distributed under the MPL is distributed on an "AS IS" basis,
+- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the MPL
+- * for the specific language governing rights and limitations under the
+- * MPL.
+- *
+- */
+-#ifndef __HYPHEN_H__
+-#define __HYPHEN_H__
+-
+-#ifdef __cplusplus
+-extern "C" {
+-#endif /* __cplusplus */
+-
+-typedef struct _HyphenDict HyphenDict;
+-typedef struct _HyphenState HyphenState;
+-typedef struct _HyphenTrans HyphenTrans;
+-#define MAX_CHARS 256
+-#define MAX_NAME 20
+-
+-struct _HyphenDict {
+-  int num_states;
+-  char cset[MAX_NAME];
+-  HyphenState *states;
+-};
+-
+-struct _HyphenState {
+-  char *match;
+-  int fallback_state;
+-  int num_trans;
+-  HyphenTrans *trans;
+-};
+-
+-struct _HyphenTrans {
+-  char ch;
+-  int new_state;
+-};
+-
+-HyphenDict *hnj_hyphen_load (const char *fn);
+-void hnj_hyphen_free (HyphenDict *dict);
+-int hnj_hyphen_hyphenate (HyphenDict *dict,
+-			   const char *word, int word_size,
+-			   char *hyphens);
+-
+-#ifdef __cplusplus
+-}
+-#endif /* __cplusplus */
+-
+-#endif /* __HYPHEN_H__ */
+diff -urNad scribus-1.3.3.13.dfsg~svn20081228~/scribus/hyphenator.h scribus-1.3.3.13.dfsg~svn20081228/scribus/hyphenator.h
+--- scribus-1.3.3.13.dfsg~svn20081228~/scribus/hyphenator.h	2006-02-15 17:38:05.000000000 +0100
++++ scribus-1.3.3.13.dfsg~svn20081228/scribus/hyphenator.h	2009-06-14 16:03:25.000000000 +0200
+@@ -11,7 +11,7 @@
+ #include <qtextcodec.h>
+ 
+ #include "scribusapi.h"
+-#include "hyphen.h"
++#include <hyphen.h>
+ class ScribusDoc;
+ class ScribusMainWindow;
+ class PageItem;

--- End Message ---
--- Begin Message ---
Source: scribus
Source-Version: 1.4.4+dfsg1-1

We believe that the bug you reported is fixed in the latest version of
scribus, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Mattia Rizzolo <[email protected]> (supplier of updated scribus package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])


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

Format: 1.8
Date: Mon, 25 Aug 2014 09:51:58 +0200
Source: scribus
Binary: scribus
Architecture: source amd64
Version: 1.4.4+dfsg1-1
Distribution: unstable
Urgency: medium
Maintainer: Oleksandr Moskalenko <[email protected]>
Changed-By: Mattia Rizzolo <[email protected]>
Description:
 scribus    - Open Source Desktop Page Layout - stable branch
Closes: 410079 533081 747814 753277
Changes:
 scribus (1.4.4+dfsg1-1) unstable; urgency=medium
 .
   * [54f1b99] Imported Upstream version 1.4.4+dfsg1. (Closes: #747814)
      + Now scribus compiles fine with clang (Closes: #753277).
      + Repacked to remove resources/dicts (Closes: #410079).
        - [41385a7] debian/{copyright,README.source}: update accordingly.
        - [a2a847a] debian/patches/remove_non-free_file.patch: update.
        - indirectly closes: #533081.
        - maybe they are really dfsg-compliant, but given that their licenses
          are unclear, and that we are not using them, let's remove them.
   * [e2c4c28] update upstream information:
     + debian/copyright:
       - update years.
       - add Files-Excluded field.
     + debian/README.source:
       - rewrite and update it.
   * debian/control:
     + [5a38dbf] remove build-dep on gcc, unversion the build-dep on libqt4-dev
       (4.6 is in oldstable now).
     + [8f58a88] suggest hyphen-hyphenation-patterns.
   * debian/rules:
     + [7ec2bac] remove a now pointless configure switch.
     + [8279630] enable parallel building.
     + [898e7c2] enable LFS.
   * [21cede5] debian/patches/* refresh entire patchset:
     + [63f3980] spelling-error-in-binary_*: add to fix homonymous lintian tag.
     + [4d8ab12] qreal_double.patch: update header.
   * [ac8bb35] debian/control: suggest scribus-doc (non-free).
   * [0618e96] debian/scribus.links: add to symlink
     usr/share/doc/scribus/{copyright → COPYING} (used in the scribus interface,
     in the about window).
Checksums-Sha1:
 dc3139ddf551d1aba9e059e01df6736e949ed6a8 2151 scribus_1.4.4+dfsg1-1.dsc
 b04758f7aa346f7c42136fe61dcabba06f191075 16801020 
scribus_1.4.4+dfsg1.orig.tar.xz
 fd6a278315e1dc45a771b2fabf747e1ca4aadeb1 51216 
scribus_1.4.4+dfsg1-1.debian.tar.xz
 a142f8fc7b350a1977170595ed5098c04041dd83 19252246 
scribus_1.4.4+dfsg1-1_amd64.deb
Checksums-Sha256:
 56fff778696f19feb1c44f5ce3d2f705b66814e59f6a7d280a725a10f6835fd4 2151 
scribus_1.4.4+dfsg1-1.dsc
 609f20db93c9851e7f2e13dae5ab2f8e4033eec3f1df50f98f2315e1dd352f97 16801020 
scribus_1.4.4+dfsg1.orig.tar.xz
 13563b4deb6b0845a6e71c0fc8e1fc893967802aa54ccf25739b88c8ee20104e 51216 
scribus_1.4.4+dfsg1-1.debian.tar.xz
 a2a7d2898ba5ba36c521e38f62711d61f466ba5eb51327a5b672a57766e6a301 19252246 
scribus_1.4.4+dfsg1-1_amd64.deb
Files:
 5c702a61be858d98404c0d250421ce3e 19252246 graphics optional 
scribus_1.4.4+dfsg1-1_amd64.deb
 6fb6a08200257a440bca211c34330d2a 2151 graphics optional 
scribus_1.4.4+dfsg1-1.dsc
 4c04009b4450c0a77e0cd1c7ba90cf6a 16801020 graphics optional 
scribus_1.4.4+dfsg1.orig.tar.xz
 85e251a75241e9c2d89731acbdc6466b 51216 graphics optional 
scribus_1.4.4+dfsg1-1.debian.tar.xz

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQIcBAEBAgAGBQJUFCN8AAoJECcT5nkIRlGvnzcP+wT+cJKgdhgYZf7FQdkz2Lta
5g4QSZhEA02xkdgn0k+dNY9qzjzoaHM6GWRW0dMtfXKY+lW/YHR1Uxc0tHoFdqCv
MwoLV+Ja6BRzcsqrwvWucQtHTrziXodpy8IqKNQlHBXO6xACZsY/8s2UaoLKZ/gs
TpC0QvXLrSr1V1JV80v9uVz6bca3Y1xaa9A3vUsDbwTIwCv9E8DYAeINY4Snfhhm
zWxTihIuwhr5jtE9tff3EGXjJyGRFPQiQ98UYDPU6XxT9kFfu/7OZFN9prs3vz4w
cVbYbZAurGJz3Y5QQWQOKptPT2gahOj5j10NC6xT1kjVQ5D/XP4tUI7hYJWAAc6Q
G17doaM8DEeHMmJShecpfmNvOejYYYmuY2qfQHt9e7BftWxExVsJQgipIjhvAYzs
9VzniM6x5gQosHuZj/JEWeiWk39RPVYFQ2OvxcRSxe3EgTf+faTuUOAgwlWtOAIn
vH5r00sguWxuHAzhvpKbF/PIgA3gCW3LVolrbhRfloXEgb3/SRMYmVzUWiqWZnaL
n4voBuGrsSkEhNb5+giyXnhuGE9JzbzESRK6u8BhGYERhfz7lM7JuJ7HcuU8rnV/
+C38uE8KU/uEsmwEpoHa7HomwwqP1up8MeQW04kQkxOiY1OafCDOoI9WB404+H+5
DU3lYxOimDeOETMc3uT5
=ZIcB
-----END PGP SIGNATURE-----

--- End Message ---

Reply via email to