delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2006/04/07/10:36:16

X-Spam-Check-By: sourceware.org
Date: Fri, 7 Apr 2006 10:36:05 -0400 (EDT)
From: Igor Peshansky <pechtcha AT cs DOT nyu DOT edu>
Reply-To: cygwin AT cygwin DOT com
To: ilya beilin <ilya AT telia DOT com>
cc: cygwin AT cygwin DOT com, xfig-bugs AT epb1 DOT lbl DOT gov
Subject: Re: Bug report: fig2dev -L latex segfaults on cygwin
In-Reply-To: <15464636.1144417735692.JavaMail.tomcat@pne-ps2-sn2>
Message-ID: <Pine.GSO.4.63.0604071023240.20823@access1.cims.nyu.edu>
References: <15464636 DOT 1144417735692 DOT JavaMail DOT tomcat AT pne-ps2-sn2>
MIME-Version: 1.0
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

On Fri, 7 Apr 2006, ilya beilin wrote:

> Hello,
> fig2dev version 3.2.4 crashes when converting certain line styles to
> latex.
> I could reproduce the crash only on Cygwin, on Linux the
> translation works somehow (the line style is apparently not supported
> and is replaced by the default one).
>
> Here is the test case:
> $ cat crashes-on-cygwin.fig
> #FIG 3.2
> Portrait
> Center
> Inches
> Letter
> 100.00
> Single
> -2
> 1200 2
> 2 4 3 1 0 7 50 -1 -1 4.000 0 0 7 0 0 5
>          1125 2850 600 2850 600 2250 1125 2250 1125 2850
> $ fig2dev.exe -L latex crashes-on-cygwin.fig
> \setlength{\unitlength}{3947sp}%
> %
> \begingroup\makeatletter\ifx\SetFigFont\undefined%
> \gdef\SetFigFont#1#2#3#4#5{%
>   \reset AT font\fontsize{#1}{#2pt}%
>   \fontfamily{#3}\fontseries{#4}\fontshape{#5}%
>   \selectfont}%
> \fi\endgroup%
> \begin{picture}(549,624)(589,-2023)
> \thinlines
> {\color[rgb]{0,0,0}\put(706,-1906){\oval(210,210)[bl]}
> \put(706,-1516){\oval(210,210)[tl]}
> \put(1021,-1906){\oval(210,210)[br]}
> \put(1021,-1516){\oval(210,210)[tr]}
> Segmentation fault (core dumped)
>
> The example and the system details are in the attachment.

Ilya,

FYI, the attachment did not come through to the Cygwin list.  However,
this is a genuine fig2dev bug (not Cygwin-specific), though it manifests
only on Cygwin for some reason.  In your case, the crash occurs in
put_arc_box() in dev/genlatex.c, when it tries to call put_line().  Now,
put_line is a function pointer that is set in the switch in lines 429-441,
which only sets it for 3 line styles (SOLID_LINE, DASHED_LINE, and
DOTTED_LINE), and doesn't have a default clause, so for more elaborate
line styles (from the newer xfig), the program jumps into
never-never-land.  Don't know why it works on Linux -- perhaps it's
picking up an old value off the stack from the previous call that ends up
being something reasonable (like put_solidline)...

In general, it's good programming practice to have default clauses in all
switch statements...  In any case, here's a patch that will fix the issue
for you ('ware the Tab characters):

--- dev/genlatex.c-orig	2006-04-07 10:31:19.137862400 -0400
+++ dev/genlatex.c	2006-04-07 10:30:13.914075200 -0400
@@ -438,6 +438,9 @@ double	val;
 		fprintf(stderr, "Dotted arc boxes approximated with solid arcs\n");
 	        put_line = put_dotline;
 		break;
+	    default:
+		fprintf(stderr, "Unknown line style -- approximating with solid lines\n");
+	        put_line = put_solidline;
 	    }
 	fprintf(tfp,
 		"\\put(%3d,%3d){\\oval(%3d,%3d)[bl]}\n"

HTH,
	Igor
-- 
				http://cs.nyu.edu/~pechtcha/
      |\      _,,,---,,_	    pechtcha AT cs DOT nyu DOT edu | igor AT watson DOT ibm DOT com
ZZZzz /,`.-'`'    -.  ;-;;,_		Igor Peshansky, Ph.D. (name changed!)
     |,4-  ) )-,_. ,\ (  `'-'		old name: Igor Pechtchanski
    '---''(_/--'  `-'\_) fL	a.k.a JaguaR-R-R-r-r-r-.-.-.  Meow!

"Las! je suis sot... -Mais non, tu ne l'es pas, puisque tu t'en rends compte."
"But no -- you are no fool; you call yourself a fool, there's proof enough in
that!" -- Rostand, "Cyrano de Bergerac"

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019