[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[aspell-devel] Re: GNU Aspell 0.60-pre1 Now Available
From: |
James Lee |
Subject: |
[aspell-devel] Re: GNU Aspell 0.60-pre1 Now Available |
Date: |
Thu, 22 Jul 2004 20:52:41 GMT |
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.
(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(...
(2) __attribute__ is not defined.
(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.
(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)
(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;
--- ./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>
(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));
James.