On 16/07/04, 03:56:58, Kevin Atkinson <[EMAIL PROTECTED]> 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. _______________________________________________ Aspell-devel mailing list [EMAIL PROTECTED] http://lists.gnu.org/mailman/listinfo/aspell-devel