Avoid double locking in g_intern_string (#322133, Benedikt Meurer)
[platform/upstream/glib.git] / ChangeLog.pre-2-10
1 2005-11-22  Matthias Clasen  <mclasen@redhat.com>
2
3         Avoid double locking in g_intern_string (#322133,
4         Benedikt Meurer)
5
6         * glib/gdataset.c (g_quark_from_string_internal): New 
7         internal function which factors out common parts of 
8         g_quark_from[_static]_string.
9         (g_quark_from_string, g_quark_from_static_string):
10         Use g_quark_from_string_internal.
11         (g_intern_string, g_intern_static_string): Use
12         g_quark_from_string_internal, and only take the
13         lock once.
14         (g_quark_new): Don't store the strings shifted by -1
15         in the g_quarks array.
16         (g_quark_to_string): Adapt to the previous change.
17
18 Tue Nov 22 14:04:26 2005  Tim Janik  <timj@imendio.com>
19
20         * glib/ghash.h: 
21         * glib/ghash.c: 
22         g_hash_table_new_full(): create hash tables with a ref count of 1.
23         g_hash_table_ref(): atomically ref_count+=1
24         g_hash_table_unref(): atomically ref_count-=1, destroys hash table
25         when refcount reaches 0.
26         g_hash_table_destroy(): just destroy keys and values, unref by 1.
27         g_hash_table_insert(): 
28         g_hash_table_replace(): assert ref_count>0.
29
30         * glib/gatomic.h: 
31         * glib/gatomic.c: added 'volatile' qualifier to all atomic pointer and
32         integer pointers.
33
34 2005-11-20  Behdad Esfahbod  <behdad@gnome.org>
35
36         * glib/guniprop.c (g_unichar_get_mirror_char): Remove unused
37         variables. (#321984, Andrew Paprocki)
38
39 2005-11-18  Matthias Clasen  <mclasen@redhat.com>
40
41         * configure.in: Bump version
42
43 2005-11-17  Matthias Clasen  <mclasen@redhat.com>
44
45         * === Released 2.9.0 ===
46
47         * glib/glib.symbols: Updates
48
49         * glib/gutf8.c (g_utf8_offset_to_pointer): Add some performance
50         hints to the docs. (Paolo Borelli)
51         
52         * NEWS: Updates
53
54         * glib/gthread.c (g_thread_foreach): Mark as new api.
55
56         * README.in: Updates.
57
58         * glib/glib.symbols: 
59         * glib/gdate.h: 
60         * glib/gdate.c (g_date_set_time_t): 
61         (g_date_set_time_val): Add functions to set a date from
62         a time_t and from a GTimeVal.
63         (g_date_set_time): Deprecate.  (#314067, Roger Leigh)
64         
65         * tests/Makefile.am:
66         * tests/utf8-pointer.c: Unit tests for g_utf8_pointer_to_offset
67         and g_utf8_offset_to_pointer.
68
69         * glib/gutf8.c (g_utf8_pointer_to_offset) 
70         (g_utf8_offset_to_pointer): Handle negative offsets, and use
71         "stutter stepping" for going backwards. (#320638, Larry
72         Ewing)
73
74         * glib/gbacktrace.c:
75         * glib/gdate.c:
76         * glib/gthread.c: const correctness fixes, found
77         by Arjan van de Ven and gcc.
78         
79 2005-11-16  Behdad Esfahbod  <behdad@gnome.org>
80
81         * docs/reference/glib/tmpl/unicode.sgml: Correct typo on mentioning
82         @G_UNICODE_BREAK_UNKNOWN that should be #G_UNICODE_BREAK_UNKNOWN.
83
84 2005-11-09  Behdad Esfahbod  <behdad@gnome.org>
85
86         * glib/guniprop.c: Use bit hacks instead when checking a general
87         category value against multiple values.
88
89         * glib/gutf8.c: Change ISO10646 to Unicode in docs.
90
91 2005-11-10  Simos Xenitellis  <simos@gnome.org>
92
93         * configure.in: Added tt (Tatar) to ALL_LINGUAS.
94
95 2005-11-05  Tor Lillqvist  <tml@novell.com>
96
97         * glib/giowin32.c (g_io_win32_set_flags): Don't call g_warning().
98         (#320688) Instead set error and return failure.
99
100 2005-11-07  Matthias Clasen  <mclasen@redhat.com>
101
102         * glib/gmain.c (g_main_dispatch): Don't call cb_funcs->unref
103         while holding the context lock.  (#320886, Andy Wingo)
104
105 2005-11-07  Billy Biggs <vektor@dumbterm.net>
106
107         * tests/refcount/Makefile.am: Add a missing reference to libglib
108         in the LDADD for this test.
109
110 2005-11-07  Matthias Clasen  <mclasen@redhat.com>
111
112         * glib/gmem.c (g_allocator_new): We need to set n_preallocs to a
113         nonzero value, otherwise GTK+ 2.8 breaks when compiled against
114         GLib 2.9.  (#320755, Luca Ferretti)
115
116 2005-11-04  Matthias Clasen  <mclasen@redhat.com>
117
118         * glib/Makefile.am: Apply a patch from Behdad Esfahbod to 
119         use a faster lookup table for g_unichar_get_mirror_char().
120         * glib/gmirroringtable.h: The new table.
121         * glib/gunichartables.h: Remove bidi_mirroring_table.
122         * glib/gen-unicode-tables.pl: Don't generate the mirroring
123         table.
124         * glib/glib-mirroring-tab/*: Sources for the program
125         which generated gmirroringtable.h.
126
127         * glib/glist.c: Avoid some code duplication.
128
129         * glib/gscanner.h: Include gdataset.h.  (#320322)
130
131         * glib/gdebug.h: add new GDebugFlag for fatal_criticals
132         * glib/gmessages.c: (_g_debug_init): handle G_DEBUG=fatal_criticals,
133         to help find critical warnings in applications.  (#320017,
134         Vincent Untz)
135
136 2005-11-02  Tor Lillqvist  <tml@novell.com>
137
138         * glib/glib.symbols: Remove large amount of trailing whitespace
139         from one line. Remove #ifdef G_UNDEFINED from around
140         g_hash_table_new and g_hash_table_new_full symbols, what was the
141         purpose of that? Add the g_slice functions.
142
143 Tue Nov  1 16:24:20 2005  Tim Janik  <timj@imendio.com>
144
145         * glib/gmem.[hc]: prepared deprecation of GMemChunk and GAllocator.
146         added g_slice_*() API to allocate and cache small bits of memory.
147         an actuall allocator implementation for g_slice_*() is still pending.
148
149         * glib/gthread.[hc]: changes from a patch by Matthias Clasen.
150         changed GRealThread list to use in-structure *next; fields instead
151         of GSList, in order for thread iteration to not depenend on g_slice_*()
152         indirectly.
153         _g_thread_mem_private_get():
154         _g_thread_mem_private_set(): added accessors for private memory,
155         needed because the ordinary GPrivate implementation relies on GArray
156         and GSList and therefore indirectly on working g_slice_*() allocations.
157
158         * glib/gthread.[hc]:
159         g_thread_foreach(): new public API function to loop over all existing threads.
160
161         * glib/gdataset.c:
162         * glib/gstring.c:
163         * glib/gcache.c:
164         * glib/garray.c: 
165         * glib/gqueue.c:
166         * glib/gslist.c:
167         * glib/glist.c:
168         * glib/ghash.c:
169         * glib/gtree.c:
170         * glib/ghook.c:
171         * glib/gmain.c:
172         * glib/gnode.c:
173         removed GAllocator and free list usages and accompanying locks.
174         use g_slice_*() API to allocate and cache small bits of memory.
175
176         * glib/ghook.h: removed GMemChunk field from public API.
177
178         * glib/gslist.h:
179         * glib/glist.h: deprecate allocator API, provide _free1() for consistency.
180
181         * glib/gnode.h: deprecate allocator API.
182
183         * glib/gmain.c: reordered GPollRec fields so g_slice_free_chain() can
184         be used for poll rec lists.
185
186         * glib/grel.c: removed mem chunk usage, and allocated tuples via g_slice_*().
187         g_relation_destroy(): free all tuples from the all_tuples hash table,
188         this effectively maintains the life time track keeping of tuples.
189         g_relation_delete_tuple(): free tuples which are removed from the
190         all_tuples hash table. this fixes a temporary leak that was present
191         in the memchunk code until the destruction of the relation.
192
193 2005-10-29  Matthias Clasen  <mclasen@redhat.com>
194
195         * tests/convert-test.c: Add some tests for conversions between
196         UTF-8, UCS-4 and UTF-16.
197
198         * glib/gutf8.c (g_utf8_to_ucs4, g_utf8_to_utf16): Fix handling
199         of len == -1, noticed by Morten Welinder.
200
201 2005-10-27  Erdal Ronahi  <erdal.ronahi@gmail.com>
202
203         * configure.in: Added ku (Kurdish) to ALL_LINGUAS
204
205 2005-10-26  Matthias Clasen  <mclasen@redhat.com>
206
207         * glib/gutf8.c (g_ucs4_to_utf8): Don't set items_read twice
208         in the error case, and add some documentation.  (#319806, Morten
209         Welinder)
210
211 2005-10-19  Manish Singh  <yosh@gimp.org>
212
213         * configure.in: Use AC_CHECK_FUNCS for _NSGetEnviron, to get the
214         config.h symbol automatically. Fixes bug #313731.
215
216 2005-10-19  Tor Lillqvist  <tml@novell.com>
217
218         * glib/gwin32.c (g_win32_get_package_installation_directory):
219         Return a g_strdup()ed copy of the value stored in the hash table,
220         so that it can be g_free()d without leaving a dangling pointer in
221         the hash table. (#319232)
222
223 2005-10-06  Matthias Clasen  <mclasen@redhat.com>
224
225         * glib/gunicollate.c (g_utf8_collate_key_for_filename): Handle
226         all-zero sequences correctly.  (#317930, Sebastien Bacher)
227
228 2005-10-05  Matthias Clasen  <mclasen@redhat.com>
229
230         * glib/gmarkup.c (g_markup_escape_text): Doc addition
231
232         * Makefile.am: Add Collation tests.
233
234         * tests/collate/*: Inputs and expected outputs for collation tests.
235
236         * tests/run-collate-tests.sh: Script to run collation tests.
237
238         * tests/unicode-collate.c (main): Rework slightly to make
239         it usable in unit tests. Also test g_utf8_collate_key_for_filename().
240
241 2005-10-01  Behdad Esfahbod  <behdad@gnome.org>
242
243         * docs/reference/glib/tmpl/unicode.sgml:
244         * glib/gen-unicode-tables.pl:
245         * glib/gunibreak.h:
246         * glib/gunichartables.h:
247         * glib/gunicode.h:
248         * tests/casefold.txt:
249         * tests/casemap.txt: Updated to Unicode 4.1.  There are five new
250         GUnicodeBreakType types.  That may break some applications, like
251         Pango <= 1.10.
252
253 2005-09-26  Matthias Clasen  <mclasen@redhat.com>
254
255         * glib/gstrfuncs.c (g_ascii_strtoull): Add details to the 
256         docs.  (#314393, Matthew F. Barnes)
257
258         * glib/glib.symbols:
259         * glib/gprintf.h: Remove g_snprintf() and g_vsnprintf(), since
260         they are already declared in glib.h. This doesn't break documented
261         use of gprintf.h, but should probably be pointed out in the 
262         release notes for 2.10. (#314232, Behdad Esfahbod)
263
264 Tue Sep 20 13:16:04 2005  Tim Janik  <timj@imendio.com>
265
266         * glib/gpattern.c (g_pattern_ph_match): applied significant recursion
267         complexity optimization, based on a patch from Matthias Clasen.
268
269         * tests/patterntest.c: more tests, mostly from matthias.
270
271 2005-09-20  Matthias Clasen  <mclasen@redhat.com>
272
273         * glib/gqueue.c (g_queue_insert_sorted): Correct the docs.
274         (#316703, Mark Drago)
275
276 Mon Sep 19 17:23:23 2005  Tim Janik  <timj@imendio.com>
277
278         * glib/gpattern.c: applied a patch from matthias which checks on the
279         upper bound of GPatternSpec length to optimize matches.
280         cosmetic fixups.
281
282         * tests/patterntest.c: added more match cases.
283
284 2005-09-16  Tor Lillqvist  <tml@novell.com>
285
286         * glib/gstrfuncs.c (g_ascii_strcasecmp, g_ascii_strncasecmp): Add
287         warning to doc comment that these functions should not be used on
288         encodings like CP932.
289
290 2005-09-14  Matthias Clasen  <mclasen@redhat.com>
291
292         * tests/keyfile-test.c: Add a test for grup names of length 1.
293
294         * glib/gkeyfile.c (g_key_file_line_is_group): Accept group names
295         of length 1.  (#316309)
296         
297 2005-09-12  Matthias Clasen  <mclasen@redhat.com>
298
299         * glib/gmarkup.c (g_markup_escape_text): Clarify docs.
300
301 2005-09-11  Sebastian Wilhelmi  <seppi@seppi.de>
302
303         * tests/refcount/Makefile.am (INCLUDES): Link the the refcount
304         tests to the system thread library $(G_THREAD_LIBS). Fixes #313744
305         and #314217.
306
307 2005-09-11  Kjartan Maraas  <kmaraas@gnome.org>
308
309         * glib/gmain.c: (g_child_watch_prepare), (g_child_watch_check),
310         (child_watch_helper_thread): Remove some dead code. Closes
311         bug #315278.
312
313 2005-09-07  Tor Lillqvist  <tml@novell.com>
314
315         * glib/Makefile.am: Create also a console version of the
316         gspawn-win32-helper program, gspawn-win32-helper-console.exe.
317         It's otherwise identical to gspawn-win32-helper.exe, except marked
318         as a console application (linked without the -mwindows option).
319         
320         * glib/gspawn-win32.c (do_spawn_directly, do_spawn_with_pipes):
321         Drop the dont_wait parameter. Its truth value correlated 100% with
322         the NULLness of the exit_status parameter anyway, so it's enough
323         to check whether exit_status is NULL. Invert the sense of the
324         dont_return_handle parameter and rename it to do_return_handle, to
325         make the code easier to read by avoiding double negations.
326
327         (g_spawn_sync_utf8, g_spawn_async_with_pipes_utf8): Modify calls
328         to do_spawn_with_pipes() accordingly.
329
330         (do_spawn_with_pipes): If we have a console, use the console
331         version of the helper program, otherwise use the GUI one. This
332         avoids extra console windows opening up in some situations. (In
333         case a console application uses the GUI gspawn-win32-helper.exe to
334         spawn another console application we would get a separate console
335         for the spawned console application).
336
337         * glib-zip.in: Distribute also gspawn-win32-helper-console.exe.
338
339 2005-09-05  Matthias Clasen  <mclasen@redhat.com>
340
341         * glib/gmappedfile.c (g_mapped_file_new): Report an error
342         if the file is too large.  (#315275, Kjartan Maraas)
343
344         * glib/gkeyfile.c (g_key_file_load_from_fd): The return value
345         of read() is signed.  (#315273, Kjartan Maraas)
346         
347 2005-08-31  Tor Lillqvist  <tml@novell.com>
348
349         * glib/gutils.h: Wrapping atexit() is a bad idea on Windows, where
350         the EXE and each DLL have their own atexit function chains.
351
352         #define g_atexit as atexit instead. This means it has a
353         better chance of doing what the caller wants. For instance,
354         gtkhtml calls g_atexit() registering a function in gtkhtml
355         itself. This caused a crash when g_atexit() was implemented as a
356         function in the GLib DLL. The gtkhtml DLL was already unloaded by
357         the time the GLib DLL got unloaded.
358
359         * glib/gutils.c: #undef the #define mentioned above, to also get a
360         real g_atexit() into the DLL for backward compatibility. Document
361         the Windows behaviour of g_atexit(), and document the varying ways
362         atexit() can behave in the context of dynamically loaded modules
363         on Unix.
364
365 2005-08-31  Matthias Clasen  <mclasen@redhat.com>
366
367         * glib/glib.symbols: 
368         * glib/gquark.h: 
369         * glib/gdataset.c: Add string interning functions.
370
371 2005-08-28  Matthias Clasen  <mclasen@redhat.com>
372
373         * glib/giochannel.c: Unify some near-duplicate strings. (#314654,
374         Clytie Siddall)
375         
376 2005-08-26  Matthias Clasen  <mclasen@redhat.com>
377
378         * configure.in: Bump version to 2.9.0
379
380 2005-08-25  Tor Lillqvist  <tml@novell.com>
381
382         Make also the g_spawn*() functions take parameters in the GLib
383         file name encoding, i.e. UTF-8, on Windows. Has no impact on Unix
384         API or ABI. Like the other GLib API that was earlier changed to
385         use UTF-8 on Windows, the names of the functions that take UTF-8
386         have _utf8 suffixes added by using preprocessor macros in the
387         header file. The old names are kept for functions with the old
388         behaviour, taking parameters in the system codepage, for DLL ABI
389         stability.
390         
391         * glib/gspawn.h: On Win32 add the suffix _utf8 to the names of the
392         g_spawn*() functions.
393         
394         * glib/gspawn-win32.c: Use wide-char API on NT-based
395         Windows. Convert parameters from UTF-8 to wide chars (NT) or
396         system codepage (Win9x) and call the C library _wspawn*() or
397         spawn*() functions respectvely. Add DLL ABI stability versions
398         that take parameters in the system codepage.
399
400         * glib/gspawn-win32-helper.c: On NT-based Windows use the
401         wide-char versions of argv and envp, and use wide-char API to
402         change directory and spawn the program to run. Remove the verbose
403         debugging output, it was too complex to modify for the wide-char
404         features. (Just add temporary debugging printouts if needed, no
405         need to have them permanently in the source.)
406
407         * glib/gspawn.c: Corresponding documentation updates.
408
409         * glib/glib.symbols: Corresponding changes: Mark the ABI stability
410         symbols as PRIVATE, add the new _utf8-suffixed ones.
411
412 2005-08-24  Stepan Kasal  <kasal@ucw.cz>
413
414         * glib/gtypes.h (G_MININT64): Cast the constant to gint64; it is
415         guint64 otherwise and that can produce warnings about comparison
416         between signed and unsigned.
417
418 2005-08-23  Matthias Clasen  <mclasen@redhat.com>
419
420         * glib/gutils.c: Fix the crt_externs.h include.
421
422 2005-08-23  Stepan Kasal  <kasal@ucw.cz>
423
424         * NEWS: Fix spelling of my first name.
425
426 2005-08-23  Matthias Clasen  <mclasen@redhat.com>
427
428         * Bump version
429
430         * === Released 2.8.1 ===
431
432         * NEWS: Updates
433
434 2005-08-20  Hans Breuer  <hans@breuer.org>
435
436         * glib/makefile.msc.in : link with ws2_32.lib
437
438 2005-08-18  Tor Lillqvist  <tml@novell.com>
439
440         * configure.in: Check for <sys/wait.h>
441
442         * glib/gbacktrace.c: Include <sys/wait.h> on if HAVE_SYS_WAIT_H.
443
444 2005-08-18  Ross Burton  <ross@burtonini.com>
445
446         * glib/gstring.c:
447         Optimise single-character insertions.
448         
449         * glib/gutf8.c:
450         Note copied code.
451         
452         * tests/string-test.c:
453         Add tests for new optimisation, and fix a leak.
454
455 2005-08-17  Matthias Clasen  <mclasen@redhat.com>
456
457         * configure.in: Check for crt_externs.h and _NSGetEnviron.
458
459         * glib/gutils.c: On Darwin, include crt-externs.h and
460         define environ using _NSGetEnviron().  (#313731)
461
462 2005-08-16  Stepan Kasal  <kasal@ucw.cz>
463
464         * glib/gutils.c (g_get_any_init): Move the body of the big if...
465         (g_get_any_init_do): ... to this new function.
466         (g_get_any_init): Declare as inline.
467         (g_get_any_init_locked): New inline function, does the locking.
468         Make use of these two throughout the code.
469
470 2005-08-15  Matthias Clasen  <mclasen@redhat.com>
471
472         * glib/gbacktrace.c (g_on_error_stack_trace): Wait for
473         the child process and then simply return. This makes 
474         The "S" option work as documented in g_on_error_query().
475         (#313125, Matthew F. Barnes)
476
477         * glib/gunicode.h: Update the link to Unicode category
478         values.  (#313369, Behnam Esfahbod)
479
480         * glib/gqueue.c (g_queue_find_custom): Clarify docs
481         a little.  (#311727, Tristan van Berkom)
482
483         * glib/abicheck.sh, gobject/abicheck.sh: Make the 
484         check work on ia64 too, where some symbols ended up 
485         in yet another section.
486