delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/1999/08/01/21:14:27

Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm
Sender: cygwin-owner AT sourceware DOT cygnus DOT com
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT sourceware DOT cygnus DOT com>
List-Archive: <http://sourceware.cygnus.com/ml/cygwin/>
List-Help: <mailto:cygwin-help AT sourceware DOT cygnus DOT com>,
<http://sourceware.cygnus.com/ml/#faqs>
Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com
From: "Reza Habib" <reza AT psych DOT utoronto DOT ca>
To: "Cygwin Mailing List" <cygwin AT sourceware DOT cygnus DOT com>
Subject: bug in valarray header
Date: Sun, 1 Aug 1999 21:15:58 -0400
Message-ID: <000001bedc84$93b10bc0$cf9194d1@newton>
MIME-Version: 1.0
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook 8.5, Build 4.71.2377.0
Importance: Normal
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2314.1300

Hello.  I'm porting a program I've written in borland c++ builder 4.0 to gcc
2.95.  The program uses the valarray classes of the standard c++ library.
The program compiles and runs correctly with borland c++ builder however the
exact same code causes a segmentation fault with gcc.  The culprit line of
source code as revealed by gdb is:

        Mask = Mask && (Image > 0.0f);

Here is the context within which that line occurs:

        //Convert image to float by assigning to valarray
        valarray<float> Image(&(vector<float>(ByteImage,ByteImage +
IMAGEFILESIZE + 1).front()),IMAGEFILESIZE);

        //Replace values less than 1/4 of maximum value with 0
        Image[Image <= (Image.max() / 4.0f)] = 0.0f;

        //Ratio normalize image: divide each value by the mean of the image
        Image /= (Image.sum() / (valarray<float>(Image[Image >
0.0f])).size());

        //Update mask with non-zero columns of current image
        Mask = Mask && (Image > 0.0f);

This is the output for gdb:

74              Mask = Mask && (Image > 0.0f);
(gdb) n
n

Program received signal SIGSEGV, Segmentation fault.
0x41a279 in LM786 ()
    at
//D/Mingw32/bin/../lib/gcc-lib/i386-mingw32/2.95/../../../../include/g++-
3/std/std_valarray.h:266
266
//D/Mingw32/bin/../lib/gcc-lib/i386-mingw32/2.95/../../../../include/g++
-3/std/std_valarray.h: No such file or directory.

I got no warnings or errors when compiling the code and as I mentioned the
code compiled and ran perfectly when compiled with borland c++ builder 4.
So my guess is that this is a problem with the gcc version of the valarray
header.  Any clues into this matter would be greatly appreciated.  Thanks.

Reza


--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com

- Raw text -


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