aspell-devel
[Top][All Lists]
Advanced

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

Re: [aspell-devel] Re: GNU Aspell 0.60-pre1 Now Available


From: Kevin Atkinson
Subject: Re: [aspell-devel] Re: GNU Aspell 0.60-pre1 Now Available
Date: Sat, 24 Jul 2004 08:08:27 -0400 (EDT)

On Thu, 22 Jul 2004, James Lee wrote:

> On 16/07/04, 03:56:58, Kevin Atkinson <address@hidden> wrote
> regarding GNU Aspell 0.60-pre1 Now Available:
> 
> > The first official pre-release of GNU Aspell 0.60 is now available
> 
> I have built 0.60-pre1 using SunPro C++ Studio 8 Compiler (version
> 5.5) and have the following comments.  There are a number of other
> small changes needed for the SunPro compiler but those below I think
> can improve aspell generally.

Ok see below.  If the other changes are minor I would like to include 
those two.  Please email be privately if you want to work on getting Aspell 
to compile with SunPro C++ without any additional modifications.

> (1) The definition of get_dynamic_filter is different in two places,
> there is an extra "const" in the statements in ./lib/new_filter.cpp.
> This causes linking to fail as the mangled name is different.
> I simply removed the const qualifier from the declarations in
> new_filter.cpp.  I suggest the definition is made in a header and
> the const requirement applied as needed, ie, either it is const or
> it's not but it's not optional.
> 
> -  PosibErr<const ConfigModule *> get_dynamic_filter(...
> +  PosibErr<ConfigModule *> get_dynamic_filter(...

This is already fixed. 

> (2) __attribute__ is not defined.

I wrapped these in "#ifdef __GNUC_".

> (3) The "#ifndef __SUNPRO_CC" in ./common/parm_string.hpp is counter
> productive.  I removed this and everything is fine.  The changes
> recently made to string.hpp smoothed out all the ambiguities we were
> seeing.

Ok removed

> (4) Variable arrays are not allowed.  I modified ./common/vararray.hpp
> to be as follows, perhaps some configure test or an #ifdef for
> compiler capability should be used.
> 
>   class MallocPtr {
>    public:
>     void * ptr;
>     MallocPtr() : ptr(0) {};
>     ~MallocPtr() {if (ptr) free(ptr);}
>   };
> 
> #define VARARRAY(type, name, num) \
>   acommon::MallocPtr name##_data;\
>   name##_data.ptr = malloc(sizeof(type) * (num)); \
>   type * name = (type *)name##_data.ptr
> 
> #define VARARRAYM(type, name, num, max) VARARRAY(type, name, num)

I added a conditional test and tested it to make sure it would work with 
the malloc case.

> (6) Arrays with no or zero length are not allowed.  These I changed
> to be 1 element.  I have not counted what extra allocation it causes,
> so far I've done what is needed to get a clean compile and a working
> system.
> 
> --- ./common/objstack.hpp.orig  2004-06-02 08:54:04.000000000 -0400
> +++ ./common/objstack.hpp       2004-07-16 10:50:14.254716000 -0400
> @@ -14,7 +14,7 @@
>    struct Node
>    {
>      Node * next;
> -    byte data[];
> +    unsigned char data[1];
>    };
>    size_t chunk_size;
>    size_t min_align;

Just changed this one.  sizeof never used.

> --- ./common/convert.cpp.orig   2004-07-14 07:45:54.000000000 -0400
> +++ ./common/convert.cpp        2004-07-16 11:21:04.747611000 -0400
> @@ -190,7 +190,7 @@
>      unsigned width;
>      unsigned size;
>      T * end;
> -    T data[];
> +    T data[1];
>    };
> 
>    template <class T, class From>

sizeof used.  Added a member struct_size to reflect the "proper" size.

> (7) There is an ambiguity as to whether "log(double)" or "log(long
> double)" should be used in ./common/convert.cpp.  This is because the
> args of the call are integer and it's not clear whether the implicit
> type cast should be to double or long double.  I type cast as double.
> 
> -    int sz = 1 << (unsigned)floor(log(size <= 1 ? 1 : size -
> 1)/log(2.0));
> +    int sz = 1 << (unsigned)floor(log((double) (size <= 1 ? 1 : size -
> 1))/log(2.0));

Does "size <= 1 ? 1.0 : size - 1" work OK?  That how I changed it.

-- 
http://kevin.atkinson.dhs.org





reply via email to

[Prev in Thread] Current Thread [Next in Thread]