[tracker] Fix tracker_language_stem_word().
- From: Carlos Garnacho <carlosg src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker] Fix tracker_language_stem_word().
- Date: Fri, 9 Oct 2009 12:56:12 +0000 (UTC)
commit 393867a68efd41b73d3d4ca29e7c170f3948d98e
Author: Carlos Garnacho <carlos lanedo com>
Date: Fri Oct 9 14:52:47 2009 +0200
Fix tracker_language_stem_word().
the case with stemming disabled was completely broken, not taking into account
word_length, and returning a dup'ed string as const gchar*. Made it more
consistent by always returning a duplicated string, and taking into account
word_length in non-stemmer case. The only caller has been updated as well.
src/libtracker-common/tracker-language.c | 10 +++++++---
src/libtracker-common/tracker-language.h | 2 +-
src/libtracker-fts/tracker-parser.c | 13 +++++--------
3 files changed, 13 insertions(+), 12 deletions(-)
---
diff --git a/src/libtracker-common/tracker-language.c b/src/libtracker-common/tracker-language.c
index 1f51b74..a470615 100644
--- a/src/libtracker-common/tracker-language.c
+++ b/src/libtracker-common/tracker-language.c
@@ -461,7 +461,7 @@ tracker_language_set_language_code (TrackerLanguage *language,
* Returns: a string with the processed word. This string must be
* freed with g_free()
**/
-const gchar *
+gchar *
tracker_language_stem_word (TrackerLanguage *language,
const gchar *word,
gint word_length)
@@ -471,10 +471,14 @@ tracker_language_stem_word (TrackerLanguage *language,
g_return_val_if_fail (TRACKER_IS_LANGUAGE (language), NULL);
+ if (word_length < 0) {
+ word_length = strlen (word);
+ }
+
priv = GET_PRIV (language);
if (!priv->enable_stemmer) {
- return g_strdup (word);
+ return g_strndup (word, word_length);
}
g_mutex_lock (priv->stemmer_mutex);
@@ -485,7 +489,7 @@ tracker_language_stem_word (TrackerLanguage *language,
g_mutex_unlock (priv->stemmer_mutex);
- return stem_word;
+ return g_strdup (stem_word);
}
/**
diff --git a/src/libtracker-common/tracker-language.h b/src/libtracker-common/tracker-language.h
index 99878e6..5ffc1d1 100644
--- a/src/libtracker-common/tracker-language.h
+++ b/src/libtracker-common/tracker-language.h
@@ -60,7 +60,7 @@ void tracker_language_set_enable_stemmer (TrackerLanguage *language,
void tracker_language_set_language_code (TrackerLanguage *language,
const gchar *language_code);
-const gchar * tracker_language_stem_word (TrackerLanguage *language,
+gchar * tracker_language_stem_word (TrackerLanguage *language,
const gchar *word,
gint word_length);
diff --git a/src/libtracker-fts/tracker-parser.c b/src/libtracker-fts/tracker-parser.c
index 4f880fd..8cfe327 100644
--- a/src/libtracker-fts/tracker-parser.c
+++ b/src/libtracker-fts/tracker-parser.c
@@ -557,10 +557,10 @@ tracker_parser_process_word (TrackerParser *parser,
gint length,
gboolean do_strip)
{
- const gchar *stem_word;
- gchar *str;
- gchar *stripped_word;
- guint bytes, len;
+ gchar *stem_word;
+ gchar *str;
+ gchar *stripped_word;
+ guint bytes, len;
g_return_val_if_fail (parser != NULL, NULL);
g_return_val_if_fail (word != NULL, NULL);
@@ -601,12 +601,9 @@ tracker_parser_process_word (TrackerParser *parser,
stem_word = tracker_language_stem_word (parser->language, str, len);
if (stem_word) {
- gchar *result;
-
- result = g_strdup (stem_word);
g_free (str);
- return result;
+ return stem_word;
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]