You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2014/07/20 02:44:33 UTC

git commit: refs/heads/win_fixes_for_0.4 - Fix some minor numerical precision issues.

Repository: lucy
Updated Branches:
  refs/heads/win_fixes_for_0.4 [created] 32fd52c86


Fix some minor numerical precision issues.

Casts, type issues, theoretical truncation, sign comparisons... exposed
courtesy of MSVC's warnings.


Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/32fd52c8
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/32fd52c8
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/32fd52c8

Branch: refs/heads/win_fixes_for_0.4
Commit: 32fd52c861e74095a5772c9a6689e8c90203a9aa
Parents: f8631ab
Author: Marvin Humphrey <ma...@rectangular.com>
Authored: Sun Jul 20 01:42:01 2014 +0100
Committer: Marvin Humphrey <ma...@rectangular.com>
Committed: Sun Jul 20 01:42:01 2014 +0100

----------------------------------------------------------------------
 core/Lucy/Analysis/Normalizer.c        |  4 ++--
 core/Lucy/Search/RangeQuery.c          |  4 ++--
 core/Lucy/Search/SortRule.c            |  2 +-
 core/Lucy/Test/Index/TestTermInfo.c    | 12 ++++++------
 core/Lucy/Test/Search/TestSortSpec.c   |  7 ++++---
 core/Lucy/Test/Search/TestSpan.c       |  8 ++++----
 core/Lucy/Test/Util/TestSortExternal.c |  4 ++--
 core/Lucy/Util/Freezer.c               |  2 +-
 core/Lucy/Util/Json.c                  |  5 ++++-
 9 files changed, 26 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy/blob/32fd52c8/core/Lucy/Analysis/Normalizer.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Analysis/Normalizer.c b/core/Lucy/Analysis/Normalizer.c
index 8b5032d..8ea50ba 100644
--- a/core/Lucy/Analysis/Normalizer.c
+++ b/core/Lucy/Analysis/Normalizer.c
@@ -135,10 +135,10 @@ Normalizer_Dump_IMP(Normalizer *self) {
 
     Hash_Store_Utf8(dump, "normalization_form", 18, (Obj*)form);
 
-    BoolNum *case_fold = Bool_singleton(options & UTF8PROC_CASEFOLD);
+    BoolNum *case_fold = Bool_singleton(!!(options & UTF8PROC_CASEFOLD));
     Hash_Store_Utf8(dump, "case_fold", 9, (Obj*)case_fold);
 
-    BoolNum *strip_accents = Bool_singleton(options & UTF8PROC_STRIPMARK);
+    BoolNum *strip_accents = Bool_singleton(!!(options & UTF8PROC_STRIPMARK));
     Hash_Store_Utf8(dump, "strip_accents", 13, (Obj*)strip_accents);
 
     return dump;

http://git-wip-us.apache.org/repos/asf/lucy/blob/32fd52c8/core/Lucy/Search/RangeQuery.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Search/RangeQuery.c b/core/Lucy/Search/RangeQuery.c
index 9b9bbb3..a2c3699 100644
--- a/core/Lucy/Search/RangeQuery.c
+++ b/core/Lucy/Search/RangeQuery.c
@@ -146,8 +146,8 @@ RangeQuery_Deserialize_IMP(RangeQuery *self, InStream *instream) {
     String *field = Freezer_read_string(instream);
     Obj *lower_term = InStream_Read_U8(instream) ? THAW(instream) : NULL;
     Obj *upper_term = InStream_Read_U8(instream) ? THAW(instream) : NULL;
-    bool include_lower = InStream_Read_U8(instream);
-    bool include_upper = InStream_Read_U8(instream);
+    bool include_lower = !!InStream_Read_U8(instream);
+    bool include_upper = !!InStream_Read_U8(instream);
 
     // Init object.
     RangeQuery_init(self, field, lower_term, upper_term, include_lower,

http://git-wip-us.apache.org/repos/asf/lucy/blob/32fd52c8/core/Lucy/Search/SortRule.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Search/SortRule.c b/core/Lucy/Search/SortRule.c
index d904cfb..736205c 100644
--- a/core/Lucy/Search/SortRule.c
+++ b/core/Lucy/Search/SortRule.c
@@ -67,7 +67,7 @@ SortRule_Deserialize_IMP(SortRule *self, InStream *instream) {
     if (ivars->type == SortRule_FIELD) {
         ivars->field = Freezer_read_string(instream);
     }
-    ivars->reverse = InStream_Read_C32(instream);
+    ivars->reverse = !!InStream_Read_C32(instream);
     return self;
 }
 

http://git-wip-us.apache.org/repos/asf/lucy/blob/32fd52c8/core/Lucy/Test/Index/TestTermInfo.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Test/Index/TestTermInfo.c b/core/Lucy/Test/Index/TestTermInfo.c
index 06defd5..fe33c4a 100644
--- a/core/Lucy/Test/Index/TestTermInfo.c
+++ b/core/Lucy/Test/Index/TestTermInfo.c
@@ -40,22 +40,22 @@ test_freqfilepos(TestBatchRunner *runner) {
     TEST_FALSE(runner, LUCY_TInfo_Equals(tinfo, (Obj*)cloned_tinfo),"the clone should be a separate C struct");
     TEST_INT_EQ(runner, TInfo_Get_Doc_Freq(tinfo), 10, "new sets doc_freq correctly" );
     TEST_INT_EQ(runner, TInfo_Get_Doc_Freq(tinfo), 10, "... doc_freq cloned" );
-    TEST_INT_EQ(runner, TInfo_Get_Post_FilePos(tinfo), 20, "... post_filepos cloned" );
-    TEST_INT_EQ(runner, TInfo_Get_Skip_FilePos(tinfo), 40, "... skip_filepos cloned" );
-    TEST_INT_EQ(runner, TInfo_Get_Lex_FilePos(tinfo),  50, "... lex_filepos cloned" );
+    TEST_INT_EQ(runner, (int)TInfo_Get_Post_FilePos(tinfo), 20, "... post_filepos cloned" );
+    TEST_INT_EQ(runner, (int)TInfo_Get_Skip_FilePos(tinfo), 40, "... skip_filepos cloned" );
+    TEST_INT_EQ(runner, (int)TInfo_Get_Lex_FilePos(tinfo),  50, "... lex_filepos cloned" );
 
     TInfo_Set_Doc_Freq(tinfo, 5);
     TEST_INT_EQ(runner, TInfo_Get_Doc_Freq(tinfo), 5,  "set/get doc_freq" );
     TEST_INT_EQ(runner, TInfo_Get_Doc_Freq(cloned_tinfo), 10, "setting orig doesn't affect clone" );
 
     TInfo_Set_Post_FilePos(tinfo, 15);
-    TEST_INT_EQ(runner, TInfo_Get_Post_FilePos(tinfo), 15, "set/get post_filepos" );
+    TEST_INT_EQ(runner, (int)TInfo_Get_Post_FilePos(tinfo), 15, "set/get post_filepos" );
 
     TInfo_Set_Skip_FilePos(tinfo, 35);
-    TEST_INT_EQ(runner, TInfo_Get_Skip_FilePos(tinfo), 35, "set/get skip_filepos" );
+    TEST_INT_EQ(runner, (int)TInfo_Get_Skip_FilePos(tinfo), 35, "set/get skip_filepos" );
 
     TInfo_Set_Lex_FilePos(tinfo, 45);
-    TEST_INT_EQ(runner, TInfo_Get_Lex_FilePos(tinfo), 45, "set/get lex_filepos" );
+    TEST_INT_EQ(runner, (int)TInfo_Get_Lex_FilePos(tinfo), 45, "set/get lex_filepos" );
 
     DECREF(tinfo);
     DECREF(cloned_tinfo);

http://git-wip-us.apache.org/repos/asf/lucy/blob/32fd52c8/core/Lucy/Test/Search/TestSortSpec.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Test/Search/TestSortSpec.c b/core/Lucy/Test/Search/TestSortSpec.c
index 46a43d2..1baea47 100644
--- a/core/Lucy/Test/Search/TestSortSpec.c
+++ b/core/Lucy/Test/Search/TestSortSpec.c
@@ -297,7 +297,8 @@ S_random_int64() {
 static Obj*
 S_random_float32() {
     uint64_t num = TestUtils_random_u64();
-    return (Obj*)Float32_new(CHY_U64_TO_DOUBLE(num) * (10.0 / UINT64_MAX));
+    double d = CHY_U64_TO_DOUBLE(num) * (10.0 / UINT64_MAX);
+    return (Obj*)Float32_new((float)d);
 }
 
 static Obj*
@@ -341,8 +342,8 @@ S_test_sorted_search(IndexSearcher *searcher, String *query,
 
     va_start(args, num_wanted);
     while (NULL != (field = va_arg(args, String*))) {
-        bool        reverse = va_arg(args, int);
-        SortRule *rule    = SortRule_new(SortRule_FIELD, field, reverse);
+        int       reverse = va_arg(args, int);
+        SortRule *rule    = SortRule_new(SortRule_FIELD, field, !!reverse);
         VA_Push(rules, (Obj*)rule);
     }
     va_end(args);

http://git-wip-us.apache.org/repos/asf/lucy/blob/32fd52c8/core/Lucy/Test/Search/TestSpan.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Test/Search/TestSpan.c b/core/Lucy/Test/Search/TestSpan.c
index 520add2..6743f22 100644
--- a/core/Lucy/Test/Search/TestSpan.c
+++ b/core/Lucy/Test/Search/TestSpan.c
@@ -30,18 +30,18 @@ TestSpan_new() {
 
 void 
 test_span_init_values(TestBatchRunner *runner) {
-    Span* span = Span_new(2,3,7);
+    Span* span = Span_new(2,3,7.0);
     TEST_INT_EQ(runner, Span_Get_Offset(span), 2, "get_offset" );
     TEST_INT_EQ(runner, Span_Get_Length(span), 3, "get_length" );
-    TEST_INT_EQ(runner, Span_Get_Weight(span), 7, "get_weight" );
+    TEST_FLOAT_EQ(runner, Span_Get_Weight(span), 7.0, "get_weight" );
 
     Span_Set_Offset(span, 10);
     Span_Set_Length(span, 1);
-    Span_Set_Weight(span, 4);
+    Span_Set_Weight(span, 4.0);
 
     TEST_INT_EQ(runner, Span_Get_Offset(span), 10, "set_offset" );
     TEST_INT_EQ(runner, Span_Get_Length(span), 1, "set_length" );
-    TEST_INT_EQ(runner, Span_Get_Weight(span), 4, "set_weight" );
+    TEST_FLOAT_EQ(runner, Span_Get_Weight(span), 4.0, "set_weight" );
 
     DECREF(span);
 }

http://git-wip-us.apache.org/repos/asf/lucy/blob/32fd52c8/core/Lucy/Test/Util/TestSortExternal.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Test/Util/TestSortExternal.c b/core/Lucy/Test/Util/TestSortExternal.c
index e14de9c..04bf030 100644
--- a/core/Lucy/Test/Util/TestSortExternal.c
+++ b/core/Lucy/Test/Util/TestSortExternal.c
@@ -156,7 +156,7 @@ test_clear_buffer(TestBatchRunner *runner) {
 static void
 S_test_sort(TestBatchRunner *runner, VArray *bytebufs, uint32_t mem_thresh,
             const char *test_name) {
-    uint32_t   size     = VA_Get_Size(bytebufs);
+    int        size     = (int)VA_Get_Size(bytebufs);
     BBSortEx  *sortex   = BBSortEx_new(mem_thresh, NULL);
     ByteBuf  **shuffled = (ByteBuf**)MALLOCATE(size * sizeof(ByteBuf*));
 
@@ -192,7 +192,7 @@ S_test_sort_letters(TestBatchRunner *runner, const char *letters,
     size_t  num_letters = strlen(letters);
     VArray *bytebufs    = VA_new(num_letters);
 
-    for (int i = 0; i < num_letters; ++i) {
+    for (size_t i = 0; i < num_letters; ++i) {
         char ch = letters[i];
         size_t size = ch == '_' ? 0 : 1;
         ByteBuf *bytebuf = BB_new_bytes(&ch, size);

http://git-wip-us.apache.org/repos/asf/lucy/blob/32fd52c8/core/Lucy/Util/Freezer.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Util/Freezer.c b/core/Lucy/Util/Freezer.c
index 3d3d923..8ad41e5 100644
--- a/core/Lucy/Util/Freezer.c
+++ b/core/Lucy/Util/Freezer.c
@@ -138,7 +138,7 @@ Freezer_deserialize(Obj *obj, InStream *instream) {
     else if (Obj_Is_A(obj, NUM)) {
         if (Obj_Is_A(obj, INTNUM)) {
             if (Obj_Is_A(obj, BOOLNUM)) {
-                bool value = (bool)InStream_Read_U8(instream);
+                bool value = !!InStream_Read_U8(instream);
                 BoolNum *self = (BoolNum*)obj;
                 if (self && self != CFISH_TRUE && self != CFISH_FALSE) {
                     Bool_Dec_RefCount_t super_decref

http://git-wip-us.apache.org/repos/asf/lucy/blob/32fd52c8/core/Lucy/Util/Json.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Util/Json.c b/core/Lucy/Util/Json.c
index 34ec936..cb8625c 100644
--- a/core/Lucy/Util/Json.c
+++ b/core/Lucy/Util/Json.c
@@ -687,7 +687,10 @@ S_set_error(CharBuf *buf, const char *json, const char *limit, int line,
         const char *end = StrHelp_back_utf8_char(json + 32, json);
         len = end - json;
     }
-    StackString *snippet = SSTR_WRAP_UTF8(json, len);
+    else if (len < 0) {
+        len = 0; // sanity check
+    }
+    StackString *snippet = SSTR_WRAP_UTF8(json, (size_t)len);
     S_append_json_string((String*)snippet, buf);
 
     String *mess = CB_Yield_String(buf);