aspell-devel
[Top][All Lists]
Advanced

[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.




reply via email to

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