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