Re: Upcoming GLib changes
- From: Soeren Sandmann <sandmann daimi au dk>
- To: gtk-devel-list redhat com
- Subject: Re: Upcoming GLib changes
- Date: 30 Jun 1999 16:52:58 +0200
Tim Janik <timj@gtk.org> writes:
> 2) the current random number implementation provides two sets of interfaces.
>
> one uses a context structure (containing some state information to produce
> the next random number) to allow multiple streams of repeatable random
> numbers, and works well in a threaded environment with no lock overhead.
>
> The other one is built on top of this and uses a single global context
> for a simplified interface. This simplified interface works
> like the old-fashioned unix rand() and srand() functions, using a global
> lock for thread safety.
>
> there was disagreement over whether the second interface was necessary.
> i liked it, but Owen and Federico thought it was confusing and unecessary
> bloat.
In my opinion there is no need for the second interface. It is more in
the spirit of GLib to use a context structure. Also, it doesn't seems
clean to have two interfaces to the same thing.
There is another issue with GLib. If memmove is not present, glib.h
implements g_memmove with bcopy, which is not guaranteed to handle
overlapping memory areas correct. This is bad since garray.c depends
on g_memmove handling overlapping areas correct.
I would suggest the following patch. It is better to be safe than
sorry.
--- configure.in.orig Wed Jun 30 16:43:06 1999
+++ configure.in Wed Jun 30 16:50:34 1999
@@ -1332,10 +1332,13 @@
;;
*)
glib_memmove="
-/* We make the assumption that if memmove isn't available, then
- * bcopy will do the job. This isn't safe everywhere. (bcopy can't
- * necessarily handle overlapping copies) */
-#define g_memmove(d,s,n) G_STMT_START { bcopy ((s), (d), (n)); } G_STMT_END"
+/* If memmove isn't available, then we do the job with bcopy */
+#define g_memmove(d,s,n) G_STMT_START { gpointer tmp; \
+ tmp = g_malloc(n); \
+ bcopy ((tmp), (s), (n)); \
+ bcopy ((d), (tmp), (n)); \
+ g_free (tmp); \
+ } G_STMT_END"
;;
esac
Søren Sandmann
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]