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