only use posix_memalign() if it's known to work, revert to memalign()
[platform/upstream/glib.git] / ChangeLog.pre-2-12
1 Tue Jan 24 17:49:36 2006  Tim Janik  <timj@imendio.com>
2
3         * glib/gslice.c: only use posix_memalign() if it's known to work,
4         revert to memalign() otherwise.
5
6         * configure.in: check for broken posix_memalign() implementations
7         to fix #328254.
8
9 2006-01-24  Matthias Clasen  <mclasen@redhat.com>
10
11         * tests/unicode-encoding.c: Use UTF-16LE as target encoding
12         on all little-endian systems.  (#143380, Marc Moorcroft)
13
14 2006-01-23  Matthias Clasen  <mclasen@redhat.com>
15
16         * configure.in: Change the shared libary extension for hpux-ia64
17         to so.  (#328253, The Written Word)
18
19 Mon Jan 23 17:30:33 2006  Tim Janik  <timj@imendio.com>
20
21         * glib/gutils.c (_g_getenv_nomalloc): wiped out all the wonderfull
22         G_OS_WIN32 code i wrote ;-[) after tml told me windows has getenv()
23         as well.
24
25 Mon Jan 23 16:46:20 2006  Tim Janik  <timj@imendio.com>
26
27         * glib/gslice.c (slice_config_init): initialize GSlice config from
28         G_SLICE environment variable. we support G_SLICE=always-malloc
29         currently, which forces all g_slice_*() allocations to use the system
30         malloc instead.
31
32         * glib/gutils.c: 
33         g_parse_debug_string(): added a note about not using g_malloc() here.
34         _g_getenv_nomalloc(): getenv() variant that doesn't use g_malloc or 
35         g_slice. contains only guesswork in the WIN32 branch.
36
37 2006-01-18  Matthias Clasen  <mclasen@redhat.com>
38
39         * Bump version
40         
41         * === Released 2.9.4 ===
42
43         * NEWS: Updates
44
45 2006-01-17  Matthias Clasen  <mclasen@redhat.com>
46
47         * glib/gkeyfile.c (g_key_file_get_groups): Correct a g_new0()
48         call.  (#327421, Morten Welinder)
49
50 2006-01-17  Sebastian Wilhelmi  <seppi@seppi.de>
51
52         * glib/gthreadpool.c: To avoid deadlocks get rid of the settings
53         G_LOCK. Use the unused_thread_queue lock instead. Change
54         g_thread_pool_thread_proxy such that threads only wait on
55         non-exlusive pools for at most a 1/2 second. Do not reorder tasks
56         due to superfluous tasks. Global tasks wait at most for
57         max-idle-time milliseconds. Make sure, that no task is woken up
58         twice for the same event via a wakeup_serial. This fixes #324228.
59
60         * tests/threadpool-test.c: Adapt test accordingly. Do not pass
61         invalid NULL into the thread pools. This as well fixes #327290.
62
63 2006-01-16  Matthias Clasen  <mclasen@redhat.com>
64
65         * configure.in: Bump version
66
67         * === Released 2.9.3 ===
68
69         * NEWS: Updates
70
71         * glib/gthread.h (g_static_mutex_get_mutex_impl_shortcut): 
72         Rework the strict aliasing fix to not break C++, pointed
73         out by Murray Cumming.
74         
75         * glib/gasyncqueue.c (g_async_queue_push_sorted_unlocked):
76         Signal waiting threads, problem noticed by Christian Kellner.
77
78 2006-01-16  Matthias Clasen  <mclasen@redhat.com>
79
80         Fix bug 326747, Alberto Ruiz:
81         
82         * glib/gconvert.c (make_valid_utf8): Change this function to
83         replace unknown characters by the Unicode replacement character
84         instead of '?', and don't append "(invalid encoding)".
85         (g_filename_display_name, g_filename_display_basename): Document
86         how to determine if the filename was in an invalid encoding.
87
88 2006-01-14  Matthias Clasen  <mclasen@redhat.com>
89
90         * glib/gtree.c: Replace the simple recursive implementation
91         by a nonrecursive, threaded implementation by Maurizio 
92         Monge.  (#169285)
93
94 2006-01-12  Matthias Clasen  <mclasen@redhat.com>
95
96         * tests/asyncqueue-test.c (main): Fix the
97         assert to not always trigger.  (#326558, 
98         Daichi Kawahata)
99
100 2006-01-11  Matthias Clasen  <mclasen@redhat.com>
101
102         * tests/convert-test.c: Don't test items_read and
103         items_written in error cases where it is not set.
104
105         * tests/asyncqueue-test.c: Set error to NULL.
106
107 2006-01-08  Matthias Clasen  <mclasen@redhat.com>
108
109         * glib/gtree.c: Break some long lines.
110
111         * tests/tree-test.c: Add more tests.
112
113         * glib/gslice.c: Include config.h first, pointed out
114         by Bogdan Nicula.
115
116 2005-12-20  Sven Herzberg  <herzi@gnome-de.org>
117
118         * docs/reference/gobject/tmpl/gtype.sgml: explain that
119         G_TYPE_INSTANCE_GET_CLASS() does behave different during
120         initialization
121
122 2006-01-06  Matthias Clasen  <mclasen@redhat.com>
123
124         * glib/gslice.c: Only define _XOPEN_SOURCE if we know
125         that we have posix_memalign().  (#323937, Bogdan Nicula)
126
127 2006-01-05  Matthias Clasen  <mclasen@redhat.com>
128
129         * configure.in: Bump version
130
131         * === Released 2.9.2 ===
132
133 2006-01-05  Hans Breuer  <hans@breuer.org>
134
135         * glib/makefile.msc.in : added gslice.obj
136
137 2006-01-05  Matthias Clasen  <mclasen@redhat.com>
138
139         * NEWS: Updates
140
141         * glib/gmain.c: Clarify the documentation of source ids
142         a bit.  (#325874, Dan Williams)
143
144         * configure.in: Fix another strict aliasing problem.
145
146         * glib/gthreadpool.c: Avoid use of varargs macro.  (#325864,
147         Kazuki IWAMOTO)
148
149 2006-01-04  Manish Singh  <yosh@gimp.org>
150
151         * glib/glib.symbols
152         * glib/gstdio.h: don't macroized g_access, g_chdir, and g_unlink
153         either, since they have the same issue as g_rmdir. (Related to
154         bug #325249)
155
156 Wed Jan  4 13:33:25 2006  Tim Janik  <timj@gtk.org>
157
158         * glib/gslice.c (magazine_cache_pop_magazine): don't reverse chunk 
159         order when creating magazines, so we hand out chunks with ascending
160         adresses.
161
162 2006-01-04  Abel Cheung  <maddog@linuxhall.org>
163
164         * configure.in: Added "ml" "zh_HK" to ALL_LINGUAS.
165
166 2006-01-03  Martyn Russell  <martyn@imendio.com>
167
168         * docs/reference/glib/glib-sections.txt:
169         * glib/glib.symbols:
170         * glib/gthreadpool.[ch]:
171         - Added new API g_thread_pool_get_idle_time() and
172         g_thread_pool_set_idle_time(). (#324228).
173         
174         * tests/threadpool-test.c: 
175         - Updated test case to do thread pool sorting, thread pool with
176         no sorting and a thread pool with idle thread timeouts.
177         
178 2006-01-03  Matthias Clasen  <mclasen@redhat.com>
179         
180         * glib/gmain.h: Add new functions here, too.
181
182         * glib/glib.symbols: Add new functions.
183
184 2005-12-20  Michael Meeks  <michael.meeks@novell.com>
185
186         * glib/gmain.c (g_main_context_is_owner): new method
187         to determine if the current thread is the owner of the
188         context.
189
190 2006-01-02  Matthias Clasen  <mclasen@redhat.com>
191
192         * glib/glib.symbols: 
193         * glib/gstdio.h: 
194         * glib/gstdio.c (g_rmdir): Don't provide g_rmdir() as a macro
195         expanding to rmdir, since rmdir is not declared in a portable
196         system header we can include in gstdio.h.  (#325249, Jani Monoses)
197
198 2006-01-01  Tor Lillqvist  <tml@novell.com>
199
200         * glib/gspawn-win32.c (g_spawn_sync_utf8): Set the GIOChannels for
201         stdout and stderr to unbuffered. Otherwise the giochannel layer
202         will try to read from them regardless whether the
203         g_io_channel_win32_poll() call here has indicated
204         readability or not. (#325310)
205
206 2005-12-29  Matthias Clasen  <mclasen@redhat.com>
207
208         * glib/gutils.c (glib_check_version): Fix a copy-and-paste error
209         in the docs.  (#325273, Declan Naughton)
210
211 2005-12-27  Manish Singh  <yosh@gimp.org>
212
213         * tests/run-collate-tests.sh: use LC_ALL instead of LC_COLLATE, to
214         make sure we really override things.
215
216 2005-12-27  Matthias Clasen  <mclasen@redhat.com>
217         
218         Fix #316221, Michal Benes, Stanislav Brabec;
219
220         * configure.in: Fix a strict aliasing problem in 
221         g_static_mutex_get_mutex(). 
222         * glib/gthread.h: ...and in 
223         g_static_mutex_get_mutex_impl_shortcut().
224
225         * glib/gdatasetprivate.h: Add a cast to silence compiler
226         warnings.  (#321978, Andrew Paprocki)
227
228         Partial fix for bug #323937, Bogdan Nicula.
229
230         * configure.in: Check for malloc.h
231         * glib/gslice.c: Don't include malloc.h unconditionally.
232
233 2005-12-27  Manish Singh  <yosh@gimp.org>
234
235         * tests/run-collate-tests.sh: export LC_COLLATE so it takes.
236         (#324950, Dan Yefimov)
237
238 2005-12-26  Matthias Clasen  <mclasen@redhat.com>
239
240         * glib/gslice.c: On Win32, include process.h  (#325015, Kazuki
241         Iwamoto)
242
243 2005-12-25  Matthias Clasen  <mclasen@redhat.com>
244
245         * AUTHORS: Update my email
246
247         * tests/slice-test.c: Fix C99isms.  (#324950, Dan Yefimov)
248
249 2005-12-21  Matthias Clasen  <mclasen@redhat.com>
250         
251         * README.in: Add some notes on when 'make check' may fail.
252
253 2005-12-20  Matthias Clasen  <mclasen@redhat.com>
254
255         * glib/glib.symbols: 
256         * glib/gthreadpool.h: 
257         * glib/gthreadpool.c (g_thread_pool_set_sort_function): New function
258         to sort tasks pushed into a threadpool.  (#324479, Martyn Russell)
259
260         * tests/threadpool-test.c: Test this.
261
262 Tue Dec 20 18:14:14 2005  Tim Janik  <timj@imendio.com>
263
264         * glib/gslice.[hc]: added mem_error() and mem_assert() to test and 
265         handle  errors without depending on gmessage.c which might not be
266         setup when the error occours.
267         removed G_SLICE_CONFIG_ALWAYS_FREE config option, fixed the code so
268         always freeing can be achieved by adjusting the working set time to
269         0 with G_SLICE_CONFIG_WORKING_SET_MSECS.
270         added G_SLICE_CONFIG_COLOR_INCREMENT to test different color increments
271         (mainly 0 and 1). reduced the minimum block size to 128 bytes, to
272         minimize wastage if small amounts of differently sized structrues are
273         allocated, this does come at a performance cost of roughly 5% though.
274         fixed up block alignment calculation, so it works for varying
275         block sizes. only use strerror() not g_strerror() since the latter
276         depends on working GQuark and GSlice.
277         mem_error(): implemented in terms of fprintf and vfprintf.
278
279         * tests/slice-color.c: new program to test cache colorization effects.
280
281         * tests/slice-test.c: trade G_SLICE_CONFIG_ALWAYS_FREE for 0 duration
282         G_SLICE_CONFIG_WORKING_SET_MSECS.
283
284 2005-12-17  Matthias Clasen  <mclasen@redhat.com>
285
286         * glib/goption.c (parse_short_option): Set an error in all
287         failure cases.  (#324332, Tim-Philipp Müller) 
288
289 2005-12-17  Sebastian Wilhelmi  <seppi@seppi.de>
290
291         * glib/gatomic.c: Fix memory barrier position in g_atomic_int_get
292         and g_atomic_pointer_get. Add g_atomic_int_set and
293         g_atomic_pointer_set implementations for the !DEFINE_WITH_MUTEXES &&
294         G_ATOMIC_OP_MEMORY_BARRIER_NEEDED case, as well as defining them
295         as functions (additionally to the macros in the header) for the 
296         !G_ATOMIC_OP_MEMORY_BARRIER_NEEDED case.
297
298 2005-12-16  Matthias Clasen  <mclasen@redhat.com>
299
300         *  glib/gmem.c (g_allocator_new): Don't return a pointer to
301         a const struct, since apps expect to be able to modify it. 
302         (#324179, J. Ali Harlow)
303
304 Tue Dec 13 10:13:32 2005  Tim Janik  <timj@imendio.com>
305
306         * glib/gatomic.h: added g_atomic_pointer_set() and g_atomic_int_set()
307         for systems where the initialization of atomic variables requires a
308         write memory barrier.
309
310 2005-12-09  Matthias Clasen  <mclasen@redhat.com>
311
312         * configure.in: Bump version
313
314         * === Released 2.9.1 ===
315
316 2005-12-09  Alexander Larsson  <alexl@redhat.com>
317
318         * glib/glist.h: 
319         * glib/gslist.h:
320         Use G_GNUC_WARN_UNUSED_RESULT on list functions that return
321         the whole list.
322
323 2005-12-08  Matthias Clasen  <mclasen@redhat.com>
324
325         * NEWS: Updates
326
327 2005-12-07  Martyn Russell  <martyn@imendio.com>
328
329         * glib/gasyncqueue.c:
330         - Call g_queue_insert_sorted() instead of duplicating the code.
331         - Call g_queue_sort() instead of duplicating the code.
332         - Invert sort function results to make sure the same sort function
333         gives the same results across glist, gslist, gqueue and
334         gasyncqueue.
335
336         * tests/asyncqueue-test.c:
337         - Updated the sort function to reflect the example in the
338         documentation for gasyncqueue.c.
339
340 2005-12-07  Martyn Russell  <martyn@imendio.com>
341
342         * docs/reference/glib/glib-sections.txt:
343         * docs/reference/glib/tmpl/linked_lists_double.sgml:
344         * docs/reference/glib/tmpl/linked_lists_single.sgml:
345         * glib/glist.[ch]: 
346         * glib/gslist.[ch]: 
347         - Added g_list_insert_sorted_with_data () and
348         g_slist_insert_sorted_with_data ().
349         - Removed the extra check in g_list_sort() and g_slist_sort() for
350         GCompareDataFunc vs. GCompareFunc.
351         
352 2005-12-07  Tor Lillqvist  <tml@novell.com>
353
354         * glib-gettextize.in: Look up prefix at run-time on Win32,
355         assuming the standard directory structure with glib-gettextize in
356         $prefix/bin.
357
358 2005-12-06  Matthias Clasen  <mclasen@redhat.com>
359
360         * glib/gmem.h: Exempt GTK+ from the mem chunk deprecation, since
361         we need GTK+ 2.8 to compile against GLib 2.10.
362
363 2005-12-05  Manish Singh  <yosh@gimp.org>
364
365         * tests/run-collate-test.sh: set LC_COLLATE, not LANG, to be sure
366         to override any user settings.
367
368 2005-12-05  Matthias Clasen  <mclasen@redhat.com>
369
370         * configure.in: Revert an accidential commit
371
372 2005-12-05  Matthias Clasen  <mclasen@redhat.com>
373
374         * glib/gutf8.c: Documentation updates.  (#323291, Morten Welinder)
375
376         * tests/Makefile.am (TESTS_ENVIRONMENT): 
377         * tests/gobject/Makefile.am (TESTS_ENVIRONMENT): Set
378         MALLOC_CHECK_ and MALLOC_PERTURB_
379
380         * tests/run-collate-tests.sh: Run the collation tests explicitly 
381         in en_US locale. (#320463)
382
383         * glib/gmem.h: Really deprecate GMemChunk.
384
385         * glib/gdate.c: 
386         * glib/gutils.c: 
387         * glib/gtree.c: 
388         * glib/gstring.c: 
389         * glib/giochannel.c: 
390         * glib/gstrfuncs.c: Add versioned deprecation docs. 
391
392 2005-12-05  Martyn Russell  <martyn@imendio.com>
393
394         * docs/reference/glib/glib-sections.txt:
395         * glib/gasyncqueue.[ch]:
396         - Added support for sorting async queues by with _push_sorted(),
397         _push_sorted_unlocked(), _sort() and _sort_unlocked() (#323047).
398         
399         * tests/Makefile.am:
400         * tests/asyncqueue-test.c:
401         - Added test case for gasyncqueue.c
402
403 Mon Dec  5 15:53:20 2005  Tim Janik  <timj@imendio.com>
404
405         * glib/gslice.c: implement chain walking for arbitrary ->next pointer
406         offsets in g_slice_free_chain_with_offset() based on a patch by behdad
407         in bug 323178. moved time consuming logic from g_slice_free() out of
408         the inner loop, so g_slice_free_chain_with_offset() provides a real
409         performance benefit over g_slice_free1() now.
410         
411         * glib/gslice.h: renamed g_slice_free_chain() to
412         g_slice_free_chain_with_offset(). implemented g_slice_free_chain() as
413         a type-safe macro as suggested in bug 323178.
414         simplified the macro implementation of g_slice_free() and implemented
415         it in a type safe manner for all compliers as suggested by Morten
416         Welinder <mortenw@gnome.org>.
417
418         * glib/gmain.c:
419         * glib/glist.c:
420         * glib/gslist.c:
421         * glib/glib.symbols: s/g_slice_free_chain/g_slice_free_chain_with_offset/
422
423 2005-12-05  Matthias Clasen  <mclasen@redhat.com>
424
425         * glib/gasyncqueue.c: Add some docs.
426
427         * tests/libmoduletestplugin_a.c: Fix compiler warnings.
428
429         * glib/gatomic.c: In the ia64 implementation, use
430         __sync builtin without _si or _di suffix.  (#321229,
431         Stanislav Brabec, patch by Andreas Schwab)
432
433 2005-12-04  Behdad Esfahbod  <behdad@gnome.org>
434
435         * glib/gslice.h: Remove comma at the end of enum.
436
437 2005-12-04  Matthias Clasen  <mclasen@redhat.com>
438
439         Handle multiple user names with the same UID better.
440         (#319535, Laszlo Peter)
441         
442         * glib/gutils.c (g_get_any_init_do): When determining user
443         data, first look up $LOGNAME. If the UID doesn't match
444         getuid(), fall back to the current behaviour of looking
445         up the user data based on getuid().
446
447 2005-12-04  Matthias Clasen  <mclasen@redhat.com>
448
449         * glib/gmacros.h (G_GNUC_WARN_UNUSED_RESULT): Add a macro
450         to make gcc warn if a function result is ignored.  (#145466,
451         Arjan van de Ven, Alex Larsson)
452
453         * glib/gmem.h: Add the new attribute to g_realloc and 
454         g_try_realloc.
455
456 2005-12-03  Matthias Clasen  <mclasen@redhat.com>
457
458         * glib/glib.symbols: 
459         * glib/gcache.h: Deprecate g_cache_value_foreach. (#322956,
460         Nicolas Caniart)
461
462         * glib/gmappedfile.c: Make mapping of empty files
463         work.  (#321530)
464         
465         * glib/gfileutils.c: Don't fork a new process just to 
466         fix the permissions of the created temp file.  (#321318,
467         Alexis S. L. Carvalho)
468
469 2005-12-02  Matthias Clasen  <mclasen@redhat.com>
470
471         * README.in: Add a note about Solaris threads.
472
473         * glib/gspawn.c:
474         * configure.in: Remove support for Solaris threads. 
475         (#136971, Sebastian Wilhelmi, patch by Andrew Paprocki)
476
477 2005-12-02  Matthias Clasen  <mclasen@redhat.com>
478
479         * configure.in: Define G_GUINT64_CONSTANT in analogy to
480         G_GINT64_CONSTANT.  (#322568, Andrew Paprocki)
481
482 2005-12-02  Matthias Clasen  <mclasen@redhat.com>
483
484         * glib/gslice.c: Win32 portability fixes and C99ism removal,
485         pointed out by Kazuki Iwamoto.  (#323052)
486         
487 2005-12-02  Matthias Clasen  <mclasen@redhat.com>
488
489         * glib/gatomic.c (g_atomic_int_add): Add a missing volatile for
490         the IA64 implementation.
491
492 Fri Dec  2 16:18:09 2005  Tim Janik  <timj@imendio.com>
493
494         * glib/gslice.c: some naming and type size fixups.
495
496 Fri Dec  2 13:08:58 2005  Tim Janik  <timj@gtk.org>
497
498         * glib/gslice.h (g_slice_free): reworked GCC-specific type-safe macro
499         variant into something less verbose, but digestible for gcc-3.4.
500
501 Fri Dec  2 10:55:07 2005  Tim Janik  <timj@imendio.com>
502
503         * tests/slice-test.c: extended to perform the benchmarking on the old
504         memchunk code if 'O' is selected.
505
506         * tests/memchunks.c: new file which contains the old GLib mem chunks
507         implementation with prefix old_mem_chunk_.
508
509         * tests/Makefile.am: added memchunks.c
510
511 Fri Dec  2 00:16:59 2005  Tim Janik  <timj@imendio.com>
512
513         * glib/gslice.c: improved gettimeofday() timer resolution by maintaining
514         acceptable load distribution of the syscall.
515         (allocator_get_magazine_threshold): reduce minimum/single-thread magazine
516         sizes to approximately page_size/2.5 to avoid excessive startup allocations.
517
518 2005-12-01  Matthias Clasen  <mclasen@redhat.com>
519
520         * tests/gobject/ifacecheck.c (test_iface_base_init): Don't
521         double-free base interface members.
522
523         * tests/Makefile.am: Remove duplicate variable.
524
525 Thu Dec  1 17:32:46 2005  Tim Janik  <timj@imendio.com>
526
527         * glib/gslice.[hc]: new slice allocator implementation.
528
529         * tests/slice-test.c: added random slice allocation test.
530
531         * glib/gthread.[hc]: removed newly added private thread mem API.
532
533         * glib/gthreadinit.h:
534         * glib/gmessages.c:
535         * glib/gthread.c:
536         * glib/gmem.c: divided glib threading initialisation into three phases,
537         initialisation where private keys and messaging are not available (only
538         needed by gmem.c), initialisation without messaging but private keys
539         available (gslice.c, gmessage.c), and full fledged initialisers that
540         server the rest of glib. initialisation functions got renamed to reflect
541         the limitations of their corresponding phases.
542
543         * glib/gmem.c: removed memchunk code, defer allocations to 
544         g_slice_* instead.
545
546         * glib/gmem.[hc]: removed g_slice_* skeletons.
547
548         * glib/glib.symbols: added g_slice_* symbols.
549
550         * configure.in: check for availability of posix_memalign(3), memalign(3)
551         and valloc(3). 
552
553         * glib/Makefile.am: added gslice.[hc].
554
555 2005-12-01  Tor Lillqvist  <tml@novell.com>
556
557         * glib/gstdio.c (g_stat): In the Win32 implementation, strip
558         trailing slash(es) for non-root folders. stat() fails if non-root
559         folders are specified with trailing slashes. It's too much hassle
560         to demand that callers strip such slashes themselves, especially
561         as it is easy to get it wrong and strip the slash of a root
562         folder.
563         (g_rename): On NT-based Windows, use MoveFileEx() with
564         MOVEFILE_REPLACE_EXISTING to better match Unix behaviour.
565
566 2005-11-28  Matthias Clasen  <mclasen@redhat.com>
567
568         Fix G_STMT_START / G_STMT_END on Solaris.  (#321972,
569         Andrew Paprocki)
570         
571         * configure.in: Check whether do { } while (0) works.
572
573         * glib/gmacros.h: Use do { } while (0) for G_STMT_START / 
574         G_STMT_END if it works.
575         
576 2005-11-28  Matthias Clasen  <mclasen@redhat.com>
577
578         * glib/gthread.c (g_static_rw_lock_wait, g_static_rw_lock_signal): 
579         * glib/gnode.c (g_node_depth_traverse_level): 
580         * glib/gmem.c (g_allocator_new): 
581         * glib/ghash.c (g_hash_table_unref, g_hash_table_destroy) 
582         (g_hash_table_foreach_remove_or_steal): Silence compiler
583         warnings.
584
585 2005-11-27  Matthias Clasen  <mclasen@redhat.com>
586
587         * glib/gunicollate.c (g_utf8_collate_key_for_filename): 
588         Don't read beyond len.  (#322520, Christian Persch)
589
590 Wed Nov 23 17:34:01 2005  Tim Janik  <timj@imendio.com>
591
592         * glib/gdataset.c: access datalist flags via atomic pointer access
593         functions, instead of acquiring the dataset lock. this is faster and
594         also matches the atomic pointer readouts in gdatalistprivate.h and
595         direct pointer modifications required by gobject.c.
596
597 Wed Nov 23 13:35:31 2005  Tim Janik  <timj@gtk.org>
598
599         * glib/gdataset.c: streamlined initialization code somewhat,
600         removed GData node cache.
601
602 2005-11-22  Matthias Clasen  <mclasen@redhat.com>
603
604         * glib/ghash.c (g_hash_table_ref): 
605         (g_hash_table_unref): Mark these as new API.
606
607         Avoid double locking in g_intern_string (#322133,
608         Benedikt Meurer)
609
610         * glib/gdataset.c (g_quark_from_string_internal): New 
611         internal function which factors out common parts of 
612         g_quark_from[_static]_string.
613         (g_quark_from_string, g_quark_from_static_string):
614         Use g_quark_from_string_internal.
615         (g_intern_string, g_intern_static_string): Use
616         g_quark_from_string_internal, and only take the
617         lock once.
618         (g_quark_new): Don't store the strings shifted by -1
619         in the g_quarks array.
620         (g_quark_to_string): Adapt to the previous change.
621
622 Tue Nov 22 14:04:26 2005  Tim Janik  <timj@imendio.com>
623
624         * glib/ghash.h: 
625         * glib/ghash.c: 
626         g_hash_table_new_full(): create hash tables with a ref count of 1.
627         g_hash_table_ref(): atomically ref_count+=1
628         g_hash_table_unref(): atomically ref_count-=1, destroys hash table
629         when refcount reaches 0.
630         g_hash_table_destroy(): just destroy keys and values, unref by 1.
631         g_hash_table_insert(): 
632         g_hash_table_replace(): assert ref_count>0.
633
634         * glib/gatomic.h: 
635         * glib/gatomic.c: added 'volatile' qualifier to all atomic pointer and
636         integer pointers.
637
638 2005-11-20  Behdad Esfahbod  <behdad@gnome.org>
639
640         * glib/guniprop.c (g_unichar_get_mirror_char): Remove unused
641         variables. (#321984, Andrew Paprocki)
642
643 2005-11-18  Matthias Clasen  <mclasen@redhat.com>
644
645         * configure.in: Bump version
646
647 2005-11-17  Matthias Clasen  <mclasen@redhat.com>
648
649         * === Released 2.9.0 ===
650
651         * glib/glib.symbols: Updates
652
653         * glib/gutf8.c (g_utf8_offset_to_pointer): Add some performance
654         hints to the docs. (Paolo Borelli)
655         
656         * NEWS: Updates
657
658         * glib/gthread.c (g_thread_foreach): Mark as new api.
659
660         * README.in: Updates.
661
662         * glib/glib.symbols: 
663         * glib/gdate.h: 
664         * glib/gdate.c (g_date_set_time_t): 
665         (g_date_set_time_val): Add functions to set a date from
666         a time_t and from a GTimeVal.
667         (g_date_set_time): Deprecate.  (#314067, Roger Leigh)
668         
669         * tests/Makefile.am:
670         * tests/utf8-pointer.c: Unit tests for g_utf8_pointer_to_offset
671         and g_utf8_offset_to_pointer.
672
673         * glib/gutf8.c (g_utf8_pointer_to_offset) 
674         (g_utf8_offset_to_pointer): Handle negative offsets, and use
675         "stutter stepping" for going backwards. (#320638, Larry
676         Ewing)
677
678         * glib/gbacktrace.c:
679         * glib/gdate.c:
680         * glib/gthread.c: const correctness fixes, found
681         by Arjan van de Ven and gcc.
682         
683 2005-11-16  Behdad Esfahbod  <behdad@gnome.org>
684
685         * docs/reference/glib/tmpl/unicode.sgml: Correct typo on mentioning
686         @G_UNICODE_BREAK_UNKNOWN that should be #G_UNICODE_BREAK_UNKNOWN.
687
688 2005-11-09  Behdad Esfahbod  <behdad@gnome.org>
689
690         * glib/guniprop.c: Use bit hacks instead when checking a general
691         category value against multiple values.
692
693         * glib/gutf8.c: Change ISO10646 to Unicode in docs.
694
695 2005-11-10  Simos Xenitellis  <simos@gnome.org>
696
697         * configure.in: Added tt (Tatar) to ALL_LINGUAS.
698
699 2005-11-05  Tor Lillqvist  <tml@novell.com>
700
701         * glib/giowin32.c (g_io_win32_set_flags): Don't call g_warning().
702         (#320688) Instead set error and return failure.
703
704 2005-11-07  Matthias Clasen  <mclasen@redhat.com>
705
706         * glib/gmain.c (g_main_dispatch): Don't call cb_funcs->unref
707         while holding the context lock.  (#320886, Andy Wingo)
708
709 2005-11-07  Billy Biggs <vektor@dumbterm.net>
710
711         * tests/refcount/Makefile.am: Add a missing reference to libglib
712         in the LDADD for this test.
713
714 2005-11-07  Matthias Clasen  <mclasen@redhat.com>
715
716         * glib/gmem.c (g_allocator_new): We need to set n_preallocs to a
717         nonzero value, otherwise GTK+ 2.8 breaks when compiled against
718         GLib 2.9.  (#320755, Luca Ferretti)
719
720 2005-11-04  Matthias Clasen  <mclasen@redhat.com>
721
722         * glib/Makefile.am: Apply a patch from Behdad Esfahbod to 
723         use a faster lookup table for g_unichar_get_mirror_char().
724         * glib/gmirroringtable.h: The new table.
725         * glib/gunichartables.h: Remove bidi_mirroring_table.
726         * glib/gen-unicode-tables.pl: Don't generate the mirroring
727         table.
728         * glib/glib-mirroring-tab/*: Sources for the program
729         which generated gmirroringtable.h.
730
731         * glib/glist.c: Avoid some code duplication.
732
733         * glib/gscanner.h: Include gdataset.h.  (#320322)
734
735         * glib/gdebug.h: add new GDebugFlag for fatal_criticals
736         * glib/gmessages.c: (_g_debug_init): handle G_DEBUG=fatal_criticals,
737         to help find critical warnings in applications.  (#320017,
738         Vincent Untz)
739
740 2005-11-02  Tor Lillqvist  <tml@novell.com>
741
742         * glib/glib.symbols: Remove large amount of trailing whitespace
743         from one line. Remove #ifdef G_UNDEFINED from around
744         g_hash_table_new and g_hash_table_new_full symbols, what was the
745         purpose of that? Add the g_slice functions.
746
747 Tue Nov  1 16:24:20 2005  Tim Janik  <timj@imendio.com>
748
749         * glib/gmem.[hc]: prepared deprecation of GMemChunk and GAllocator.
750         added g_slice_*() API to allocate and cache small bits of memory.
751         an actuall allocator implementation for g_slice_*() is still pending.
752
753         * glib/gthread.[hc]: changes from a patch by Matthias Clasen.
754         changed GRealThread list to use in-structure *next; fields instead
755         of GSList, in order for thread iteration to not depenend on g_slice_*()
756         indirectly.
757         _g_thread_mem_private_get():
758         _g_thread_mem_private_set(): added accessors for private memory,
759         needed because the ordinary GPrivate implementation relies on GArray
760         and GSList and therefore indirectly on working g_slice_*() allocations.
761
762         * glib/gthread.[hc]:
763         g_thread_foreach(): new public API function to loop over all existing threads.
764
765         * glib/gdataset.c:
766         * glib/gstring.c:
767         * glib/gcache.c:
768         * glib/garray.c: 
769         * glib/gqueue.c:
770         * glib/gslist.c:
771         * glib/glist.c:
772         * glib/ghash.c:
773         * glib/gtree.c:
774         * glib/ghook.c:
775         * glib/gmain.c:
776         * glib/gnode.c:
777         removed GAllocator and free list usages and accompanying locks.
778         use g_slice_*() API to allocate and cache small bits of memory.
779
780         * glib/ghook.h: removed GMemChunk field from public API.
781
782         * glib/gslist.h:
783         * glib/glist.h: deprecate allocator API, provide _free1() for consistency.
784
785         * glib/gnode.h: deprecate allocator API.
786
787         * glib/gmain.c: reordered GPollRec fields so g_slice_free_chain() can
788         be used for poll rec lists.
789
790         * glib/grel.c: removed mem chunk usage, and allocated tuples via g_slice_*().
791         g_relation_destroy(): free all tuples from the all_tuples hash table,
792         this effectively maintains the life time track keeping of tuples.
793         g_relation_delete_tuple(): free tuples which are removed from the
794         all_tuples hash table. this fixes a temporary leak that was present
795         in the memchunk code until the destruction of the relation.
796
797 2005-10-29  Matthias Clasen  <mclasen@redhat.com>
798
799         * tests/convert-test.c: Add some tests for conversions between
800         UTF-8, UCS-4 and UTF-16.
801
802         * glib/gutf8.c (g_utf8_to_ucs4, g_utf8_to_utf16): Fix handling
803         of len == -1, noticed by Morten Welinder.
804
805 2005-10-27  Erdal Ronahi  <erdal.ronahi@gmail.com>
806
807         * configure.in: Added ku (Kurdish) to ALL_LINGUAS
808
809 2005-10-26  Matthias Clasen  <mclasen@redhat.com>
810
811         * glib/gutf8.c (g_ucs4_to_utf8): Don't set items_read twice
812         in the error case, and add some documentation.  (#319806, Morten
813         Welinder)
814
815 2005-10-19  Manish Singh  <yosh@gimp.org>
816
817         * configure.in: Use AC_CHECK_FUNCS for _NSGetEnviron, to get the
818         config.h symbol automatically. Fixes bug #313731.
819
820 2005-10-19  Tor Lillqvist  <tml@novell.com>
821
822         * glib/gwin32.c (g_win32_get_package_installation_directory):
823         Return a g_strdup()ed copy of the value stored in the hash table,
824         so that it can be g_free()d without leaving a dangling pointer in
825         the hash table. (#319232)
826
827 2005-10-06  Matthias Clasen  <mclasen@redhat.com>
828
829         * glib/gunicollate.c (g_utf8_collate_key_for_filename): Handle
830         all-zero sequences correctly.  (#317930, Sebastien Bacher)
831
832 2005-10-05  Matthias Clasen  <mclasen@redhat.com>
833
834         * glib/gmarkup.c (g_markup_escape_text): Doc addition
835
836         * Makefile.am: Add Collation tests.
837
838         * tests/collate/*: Inputs and expected outputs for collation tests.
839
840         * tests/run-collate-tests.sh: Script to run collation tests.
841
842         * tests/unicode-collate.c (main): Rework slightly to make
843         it usable in unit tests. Also test g_utf8_collate_key_for_filename().
844
845 2005-10-01  Behdad Esfahbod  <behdad@gnome.org>
846
847         * docs/reference/glib/tmpl/unicode.sgml:
848         * glib/gen-unicode-tables.pl:
849         * glib/gunibreak.h:
850         * glib/gunichartables.h:
851         * glib/gunicode.h:
852         * tests/casefold.txt:
853         * tests/casemap.txt: Updated to Unicode 4.1.  There are five new
854         GUnicodeBreakType types.  That may break some applications, like
855         Pango <= 1.10.
856
857 2005-09-26  Matthias Clasen  <mclasen@redhat.com>
858
859         * glib/gstrfuncs.c (g_ascii_strtoull): Add details to the 
860         docs.  (#314393, Matthew F. Barnes)
861
862         * glib/glib.symbols:
863         * glib/gprintf.h: Remove g_snprintf() and g_vsnprintf(), since
864         they are already declared in glib.h. This doesn't break documented
865         use of gprintf.h, but should probably be pointed out in the 
866         release notes for 2.10. (#314232, Behdad Esfahbod)
867
868 Tue Sep 20 13:16:04 2005  Tim Janik  <timj@imendio.com>
869
870         * glib/gpattern.c (g_pattern_ph_match): applied significant recursion
871         complexity optimization, based on a patch from Matthias Clasen.
872
873         * tests/patterntest.c: more tests, mostly from matthias.
874
875 2005-09-20  Matthias Clasen  <mclasen@redhat.com>
876
877         * glib/gqueue.c (g_queue_insert_sorted): Correct the docs.
878         (#316703, Mark Drago)
879
880 Mon Sep 19 17:23:23 2005  Tim Janik  <timj@imendio.com>
881
882         * glib/gpattern.c: applied a patch from matthias which checks on the
883         upper bound of GPatternSpec length to optimize matches.
884         cosmetic fixups.
885
886         * tests/patterntest.c: added more match cases.
887
888 2005-09-16  Tor Lillqvist  <tml@novell.com>
889
890         * glib/gstrfuncs.c (g_ascii_strcasecmp, g_ascii_strncasecmp): Add
891         warning to doc comment that these functions should not be used on
892         encodings like CP932.
893
894 2005-09-14  Matthias Clasen  <mclasen@redhat.com>
895
896         * tests/keyfile-test.c: Add a test for grup names of length 1.
897
898         * glib/gkeyfile.c (g_key_file_line_is_group): Accept group names
899         of length 1.  (#316309)
900         
901 2005-09-12  Matthias Clasen  <mclasen@redhat.com>
902
903         * glib/gmarkup.c (g_markup_escape_text): Clarify docs.
904
905 2005-09-11  Sebastian Wilhelmi  <seppi@seppi.de>
906
907         * tests/refcount/Makefile.am (INCLUDES): Link the the refcount
908         tests to the system thread library $(G_THREAD_LIBS). Fixes #313744
909         and #314217.
910
911 2005-09-11  Kjartan Maraas  <kmaraas@gnome.org>
912
913         * glib/gmain.c: (g_child_watch_prepare), (g_child_watch_check),
914         (child_watch_helper_thread): Remove some dead code. Closes
915         bug #315278.
916
917 2005-09-07  Tor Lillqvist  <tml@novell.com>
918
919         * glib/Makefile.am: Create also a console version of the
920         gspawn-win32-helper program, gspawn-win32-helper-console.exe.
921         It's otherwise identical to gspawn-win32-helper.exe, except marked
922         as a console application (linked without the -mwindows option).
923         
924         * glib/gspawn-win32.c (do_spawn_directly, do_spawn_with_pipes):
925         Drop the dont_wait parameter. Its truth value correlated 100% with
926         the NULLness of the exit_status parameter anyway, so it's enough
927         to check whether exit_status is NULL. Invert the sense of the
928         dont_return_handle parameter and rename it to do_return_handle, to
929         make the code easier to read by avoiding double negations.
930
931         (g_spawn_sync_utf8, g_spawn_async_with_pipes_utf8): Modify calls
932         to do_spawn_with_pipes() accordingly.
933
934         (do_spawn_with_pipes): If we have a console, use the console
935         version of the helper program, otherwise use the GUI one. This
936         avoids extra console windows opening up in some situations. (In
937         case a console application uses the GUI gspawn-win32-helper.exe to
938         spawn another console application we would get a separate console
939         for the spawned console application).
940
941         * glib-zip.in: Distribute also gspawn-win32-helper-console.exe.
942
943 2005-09-05  Matthias Clasen  <mclasen@redhat.com>
944
945         * glib/gmappedfile.c (g_mapped_file_new): Report an error
946         if the file is too large.  (#315275, Kjartan Maraas)
947
948         * glib/gkeyfile.c (g_key_file_load_from_fd): The return value
949         of read() is signed.  (#315273, Kjartan Maraas)
950         
951 2005-08-31  Tor Lillqvist  <tml@novell.com>
952
953         * glib/gutils.h: Wrapping atexit() is a bad idea on Windows, where
954         the EXE and each DLL have their own atexit function chains.
955
956         #define g_atexit as atexit instead. This means it has a
957         better chance of doing what the caller wants. For instance,
958         gtkhtml calls g_atexit() registering a function in gtkhtml
959         itself. This caused a crash when g_atexit() was implemented as a
960         function in the GLib DLL. The gtkhtml DLL was already unloaded by
961         the time the GLib DLL got unloaded.
962
963         * glib/gutils.c: #undef the #define mentioned above, to also get a
964         real g_atexit() into the DLL for backward compatibility. Document
965         the Windows behaviour of g_atexit(), and document the varying ways
966         atexit() can behave in the context of dynamically loaded modules
967         on Unix.
968
969 2005-08-31  Matthias Clasen  <mclasen@redhat.com>
970
971         * glib/glib.symbols: 
972         * glib/gquark.h: 
973         * glib/gdataset.c: Add string interning functions.
974
975 2005-08-28  Matthias Clasen  <mclasen@redhat.com>
976
977         * glib/giochannel.c: Unify some near-duplicate strings. (#314654,
978         Clytie Siddall)
979         
980 2005-08-26  Matthias Clasen  <mclasen@redhat.com>
981
982         * configure.in: Bump version to 2.9.0
983
984 2005-08-25  Tor Lillqvist  <tml@novell.com>
985
986         Make also the g_spawn*() functions take parameters in the GLib
987         file name encoding, i.e. UTF-8, on Windows. Has no impact on Unix
988         API or ABI. Like the other GLib API that was earlier changed to
989         use UTF-8 on Windows, the names of the functions that take UTF-8
990         have _utf8 suffixes added by using preprocessor macros in the
991         header file. The old names are kept for functions with the old
992         behaviour, taking parameters in the system codepage, for DLL ABI
993         stability.
994         
995         * glib/gspawn.h: On Win32 add the suffix _utf8 to the names of the
996         g_spawn*() functions.
997         
998         * glib/gspawn-win32.c: Use wide-char API on NT-based
999         Windows. Convert parameters from UTF-8 to wide chars (NT) or
1000         system codepage (Win9x) and call the C library _wspawn*() or
1001         spawn*() functions respectvely. Add DLL ABI stability versions
1002         that take parameters in the system codepage.
1003
1004         * glib/gspawn-win32-helper.c: On NT-based Windows use the
1005         wide-char versions of argv and envp, and use wide-char API to
1006         change directory and spawn the program to run. Remove the verbose
1007         debugging output, it was too complex to modify for the wide-char
1008         features. (Just add temporary debugging printouts if needed, no
1009         need to have them permanently in the source.)
1010
1011         * glib/gspawn.c: Corresponding documentation updates.
1012
1013         * glib/glib.symbols: Corresponding changes: Mark the ABI stability
1014         symbols as PRIVATE, add the new _utf8-suffixed ones.
1015
1016 2005-08-24  Stepan Kasal  <kasal@ucw.cz>
1017
1018         * glib/gtypes.h (G_MININT64): Cast the constant to gint64; it is
1019         guint64 otherwise and that can produce warnings about comparison
1020         between signed and unsigned.
1021
1022 2005-08-23  Matthias Clasen  <mclasen@redhat.com>
1023
1024         * glib/gutils.c: Fix the crt_externs.h include.
1025
1026 2005-08-23  Stepan Kasal  <kasal@ucw.cz>
1027
1028         * NEWS: Fix spelling of my first name.
1029
1030 2005-08-23  Matthias Clasen  <mclasen@redhat.com>
1031
1032         * Bump version
1033
1034         * === Released 2.8.1 ===
1035
1036         * NEWS: Updates
1037
1038 2005-08-20  Hans Breuer  <hans@breuer.org>
1039
1040         * glib/makefile.msc.in : link with ws2_32.lib
1041
1042 2005-08-18  Tor Lillqvist  <tml@novell.com>
1043
1044         * configure.in: Check for <sys/wait.h>
1045
1046         * glib/gbacktrace.c: Include <sys/wait.h> on if HAVE_SYS_WAIT_H.
1047
1048 2005-08-18  Ross Burton  <ross@burtonini.com>
1049
1050         * glib/gstring.c:
1051         Optimise single-character insertions.
1052         
1053         * glib/gutf8.c:
1054         Note copied code.
1055         
1056         * tests/string-test.c:
1057         Add tests for new optimisation, and fix a leak.
1058
1059 2005-08-17  Matthias Clasen  <mclasen@redhat.com>
1060
1061         * configure.in: Check for crt_externs.h and _NSGetEnviron.
1062
1063         * glib/gutils.c: On Darwin, include crt-externs.h and
1064         define environ using _NSGetEnviron().  (#313731)
1065
1066 2005-08-16  Stepan Kasal  <kasal@ucw.cz>
1067
1068         * glib/gutils.c (g_get_any_init): Move the body of the big if...
1069         (g_get_any_init_do): ... to this new function.
1070         (g_get_any_init): Declare as inline.
1071         (g_get_any_init_locked): New inline function, does the locking.
1072         Make use of these two throughout the code.
1073
1074 2005-08-15  Matthias Clasen  <mclasen@redhat.com>
1075
1076         * glib/gbacktrace.c (g_on_error_stack_trace): Wait for
1077         the child process and then simply return. This makes 
1078         The "S" option work as documented in g_on_error_query().
1079         (#313125, Matthew F. Barnes)
1080
1081         * glib/gunicode.h: Update the link to Unicode category
1082         values.  (#313369, Behnam Esfahbod)
1083
1084         * glib/gqueue.c (g_queue_find_custom): Clarify docs
1085         a little.  (#311727, Tristan van Berkom)
1086
1087         * glib/abicheck.sh, gobject/abicheck.sh: Make the 
1088         check work on ia64 too, where some symbols ended up 
1089         in yet another section.
1090