diff -Nru dee-1.0.6/configure dee-1.0.8/configure --- dee-1.0.6/configure 2012-03-12 08:20:55.000000000 +0000 +++ dee-1.0.8/configure 2012-03-23 11:41:00.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for dee 1.0.6. +# Generated by GNU Autoconf 2.68 for dee 1.0.8. # # Report bugs to . # @@ -570,8 +570,8 @@ # Identity of this package. PACKAGE_NAME='dee' PACKAGE_TARNAME='dee' -PACKAGE_VERSION='1.0.6' -PACKAGE_STRING='dee 1.0.6' +PACKAGE_VERSION='1.0.8' +PACKAGE_STRING='dee 1.0.8' PACKAGE_BUGREPORT='https://bugs.launchpad.net/dee' PACKAGE_URL='' @@ -1378,7 +1378,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures dee 1.0.6 to adapt to many kinds of systems. +\`configure' configures dee 1.0.8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1448,7 +1448,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of dee 1.0.6:";; + short | recursive ) echo "Configuration of dee 1.0.8:";; esac cat <<\_ACEOF @@ -1581,7 +1581,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -dee configure 1.0.6 +dee configure 1.0.8 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -1950,7 +1950,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by dee $as_me 1.0.6, which was +It was created by dee $as_me 1.0.8, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -2774,7 +2774,7 @@ # Define the identity of the package. PACKAGE='dee' - VERSION='1.0.6' + VERSION='1.0.8' cat >>confdefs.h <<_ACEOF @@ -3031,8 +3031,8 @@ DEE_MAJOR_VERSION=1 DEE_MINOR_VERSION=0 -DEE_MICRO_VERSION=6 -DEE_VERSION=1.0.6 +DEE_MICRO_VERSION=8 +DEE_VERSION=1.0.8 @@ -13866,7 +13866,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by dee $as_me 1.0.6, which was +This file was extended by dee $as_me 1.0.8, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -13932,7 +13932,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -dee config.status 1.0.6 +dee config.status 1.0.8 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" @@ -16298,7 +16298,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by dee $as_me 1.0.6, which was +This file was extended by dee $as_me 1.0.8, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -16364,7 +16364,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -dee config.status 1.0.6 +dee config.status 1.0.8 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" diff -Nru dee-1.0.6/configure.ac dee-1.0.8/configure.ac --- dee-1.0.6/configure.ac 2012-03-12 08:20:37.000000000 +0000 +++ dee-1.0.8/configure.ac 2012-03-23 11:40:33.000000000 +0000 @@ -5,7 +5,7 @@ # Don't forget that this changes also GIR version, and requires rebuilding vapi m4_define([dee_major], [1]) m4_define([dee_minor], [0]) -m4_define([dee_micro], [6]) +m4_define([dee_micro], [8]) m4_define([dee_api], [dee_major.dee_minor]) m4_define([dee_version], diff -Nru dee-1.0.6/debian/changelog dee-1.0.8/debian/changelog --- dee-1.0.6/debian/changelog 2012-03-23 14:25:38.000000000 +0000 +++ dee-1.0.8/debian/changelog 2012-03-23 14:25:39.000000000 +0000 @@ -1,3 +1,11 @@ +dee (1.0.8-0ubuntu1) precise-proposed; urgency=low + + * New upstream release. + - Prefix search doesn't work with non-C locale (LP: #956882) + - Incorrect gir signature for DeeCompareRowFunc (LP: #959458) + + -- Didier Roche Fri, 23 Mar 2012 14:59:58 +0100 + dee (1.0.6-0ubuntu1) precise; urgency=low * New upstream release. diff -Nru dee-1.0.6/src/dee-model.h dee-1.0.8/src/dee-model.h --- dee-1.0.6/src/dee-model.h 2012-02-21 10:48:30.000000000 +0000 +++ dee-1.0.8/src/dee-model.h 2012-03-19 11:08:56.000000000 +0000 @@ -64,8 +64,8 @@ /** * DeeCompareRowFunc: - * @row1: The model being indexed - * @row2: The row to extract terms for + * @row1: (array): The model being indexed + * @row2: (array): The row to extract terms for * @user_data: (closure): User data to pass to comparison function * * Compares @row1 and @row2. Mainly used with dee_model_insert_sorted() and diff -Nru dee-1.0.6/src/dee-tree-index.c dee-1.0.8/src/dee-tree-index.c --- dee-1.0.6/src/dee-tree-index.c 2012-03-01 15:15:45.000000000 +0000 +++ dee-1.0.8/src/dee-tree-index.c 2012-03-16 11:44:56.000000000 +0000 @@ -119,10 +119,12 @@ static GSequenceIter* find_term (GSequence *terms, const gchar *term, + const gchar *col_key, DeeAnalyzer *analyzer); static GSequenceIter* find_term_real (GSequence *terms, const gchar *term, + const gchar *col_key, DeeAnalyzer *analyzer, DeeTermMatchFlag flags); /* @@ -214,14 +216,16 @@ /* Search priv->terms for a string from priv->term_list. * ! Doesn't work for strings not in priv->term_list ! */ static GSequenceIter* -find_term (GSequence *terms, const gchar *term, DeeAnalyzer *analyzer) +find_term (GSequence *terms, const gchar *term, const gchar *col_key, + DeeAnalyzer *analyzer) { - return find_term_real (terms, term, analyzer, DEE_TERM_MATCH_EXACT); + return find_term_real (terms, term, col_key, analyzer, DEE_TERM_MATCH_EXACT); } static GSequenceIter* find_term_real (GSequence *terms, const gchar *term, + const gchar *col_key, DeeAnalyzer *analyzer, DeeTermMatchFlag flags) { @@ -235,7 +239,7 @@ if (begin == end) return NULL; - search_term.col_key = term; + search_term.col_key = col_key; if (flags & DEE_TERM_MATCH_EXACT) { @@ -259,14 +263,14 @@ { previous = g_sequence_iter_prev (previous); term_result = g_sequence_get (previous); - if (g_str_has_prefix (term_result->col_key, term)) iter = previous; + if (g_str_has_prefix (term_result->term, term)) iter = previous; else break; } if (iter == found_iter) { /* We never checked this one */ term_result = g_sequence_get (iter); - if (g_str_has_prefix (term_result->col_key, term)) + if (g_str_has_prefix (term_result->term, term)) return iter; } else @@ -421,14 +425,16 @@ priv = DEE_TREE_INDEX (self)->priv; analyzer = dee_index_get_analyzer (self); col_key = dee_analyzer_collate_key (analyzer, term); - term_iter = find_term_real (priv->terms, col_key, analyzer, flags); + term_iter = find_term_real (priv->terms, term, col_key, analyzer, flags); g_free (col_key); if (term_iter == NULL || term_iter == g_sequence_get_end_iter (priv->terms)) - return dee_glist_result_set_new (NULL, /* The empty GList */ - dee_index_get_model (self), - NULL); + { + return dee_glist_result_set_new (NULL, /* The empty GList */ + dee_index_get_model (self), + NULL); + } if (flags & DEE_TERM_MATCH_EXACT) { @@ -446,7 +452,8 @@ end = g_sequence_get_end_iter (priv->terms); term_data = g_sequence_get (term_iter); - while (g_str_has_prefix (term_data->col_key, term)) + /* We can't use collation keys for prefix matching */ + while (g_str_has_prefix (term_data->term, term)) { GList *rows = term_rows (term_data); iter = rows; @@ -503,9 +510,11 @@ { DeeTreeIndexPrivate *priv; DeeModel *model; + DeeAnalyzer *analyzer; DeeResultSet *results; GSequenceIter *iter, *end; Term *term_data; + gchar *col_key; g_return_if_fail (DEE_IS_TREE_INDEX (self)); g_return_if_fail (func != NULL); @@ -517,8 +526,10 @@ iter = g_sequence_get_begin_iter (priv->terms); else { - iter = find_term (priv->terms, start_term, // FIXME: col key? - dee_index_get_analyzer (self)); + analyzer = dee_index_get_analyzer (self); + col_key = dee_analyzer_collate_key (analyzer, start_term); + iter = find_term (priv->terms, start_term, col_key, analyzer); + g_free (col_key); if (iter == NULL || iter == g_sequence_get_end_iter (priv->terms)) return; @@ -568,13 +579,16 @@ Term *term_data; GSequenceIter *term_iter; DeeAnalyzer *analyzer; + gchar *col_key; g_return_val_if_fail (DEE_IS_TREE_INDEX (self), 0); g_return_val_if_fail (term != NULL, 0); priv = DEE_TREE_INDEX (self)->priv; analyzer = dee_index_get_analyzer (self); - term_iter = find_term (priv->terms, term, analyzer); // FIXME: col key? + col_key = dee_analyzer_collate_key (analyzer, term); + term_iter = find_term (priv->terms, term, col_key, analyzer); + g_free (col_key); if (term_iter == NULL || term_iter == g_sequence_get_end_iter (priv->terms)) @@ -641,7 +655,7 @@ term = dee_term_list_get_term (priv->term_list, i); /* Update priv->terms */ - term_iter = find_term (priv->terms, colkey, analyzer); + term_iter = find_term (priv->terms, term, colkey, analyzer); if (term_iter == NULL || term_iter == g_sequence_get_end_iter (priv->terms)) @@ -698,7 +712,8 @@ if (term_n_rows (term_data) == 0) { /* Removing the term from the sequence also frees it */ - term_iter = find_term (priv->terms, term_data->col_key, analyzer); + term_iter = find_term (priv->terms, term_data->term, + term_data->col_key, analyzer); g_sequence_remove (term_iter); } } diff -Nru dee-1.0.6/tests/test-dee.c dee-1.0.8/tests/test-dee.c --- dee-1.0.6/tests/test-dee.c 2012-01-26 12:46:35.000000000 +0000 +++ dee-1.0.8/tests/test-dee.c 2012-03-16 10:52:18.000000000 +0000 @@ -20,6 +20,7 @@ #include "config.h" #include #include +#include void test_model_column_create_suite (void); void test_model_complex_column_create_suite (void); @@ -54,6 +55,7 @@ g_thread_init (NULL); g_test_init (&argc, &argv, NULL); + setlocale (LC_ALL, ""); test_model_column_create_suite (); test_model_complex_column_create_suite (); diff -Nru dee-1.0.6/vapi/dee-1.0.vapi dee-1.0.8/vapi/dee-1.0.vapi --- dee-1.0.6/vapi/dee-1.0.vapi 2012-03-12 08:21:15.000000000 +0000 +++ dee-1.0.8/vapi/dee-1.0.vapi 2012-03-23 11:41:25.000000000 +0000 @@ -341,7 +341,7 @@ [CCode (cheader_filename = "dee.h", instance_pos = 1.9)] public delegate string CollatorFunc (string input); [CCode (cheader_filename = "dee.h", instance_pos = 2.9)] - public delegate int CompareRowFunc (GLib.Variant row1, GLib.Variant row2); + public delegate int CompareRowFunc ([CCode (array_length = false)] GLib.Variant[] row1, [CCode (array_length = false)] GLib.Variant[] row2); [CCode (cheader_filename = "dee.h", instance_pos = 2.9)] public delegate void FilterMapFunc (Dee.Model orig_model, Dee.FilterModel filter_model); [CCode (cheader_filename = "dee.h", instance_pos = 3.9)]