This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-nanoarrow.git


The following commit(s) were added to refs/heads/main by this push:
     new 2fd50f7c Update dist/ for commit 
3540b8578bd78fc77787babe06b9931e2634d600
2fd50f7c is described below

commit 2fd50f7c3a87eddf951a3904e442475665bed414
Author: GitHub Actions <[email protected]>
AuthorDate: Wed Jun 12 01:31:04 2024 +0000

    Update dist/ for commit 3540b8578bd78fc77787babe06b9931e2634d600
---
 dist/nanoarrow.c   | 38 +++++++++++++++++++++-----------------
 dist/nanoarrow.hpp |  2 +-
 2 files changed, 22 insertions(+), 18 deletions(-)

diff --git a/dist/nanoarrow.c b/dist/nanoarrow.c
index c4897cfa..0c5e2492 100644
--- a/dist/nanoarrow.c
+++ b/dist/nanoarrow.c
@@ -3163,6 +3163,7 @@ static int ArrowArrayViewValidateDefault(struct 
ArrowArrayView* array_view,
 
     case NANOARROW_TYPE_RUN_END_ENCODED: {
       struct ArrowArrayView* run_ends_view = array_view->children[0];
+      if (run_ends_view->length == 0) break;
       int64_t last_run_end = ArrowArrayViewGetIntUnsafe(run_ends_view, 0);
       if (last_run_end < 1) {
         ArrowErrorSet(error,
@@ -3342,25 +3343,28 @@ static int ArrowArrayViewValidateFull(struct 
ArrowArrayView* array_view,
 
   if (array_view->storage_type == NANOARROW_TYPE_RUN_END_ENCODED) {
     struct ArrowArrayView* run_ends_view = array_view->children[0];
-    int64_t last_run_end = ArrowArrayViewGetIntUnsafe(run_ends_view, 0);
-    for (int64_t i = 1; i < run_ends_view->length; i++) {
-      const int64_t run_end = ArrowArrayViewGetIntUnsafe(run_ends_view, i);
-      if (run_end <= last_run_end) {
-        ArrowErrorSet(error,
-                      "Every run end must be strictly greater than the 
previous run end, "
-                      "but run_ends[%ld] is %ld and run_ends[%ld] is %ld",
-                      (long)i, (long)run_end, (long)i - 1, (long)last_run_end);
+    if (run_ends_view->length > 0) {
+      int64_t last_run_end = ArrowArrayViewGetIntUnsafe(run_ends_view, 0);
+      for (int64_t i = 1; i < run_ends_view->length; i++) {
+        const int64_t run_end = ArrowArrayViewGetIntUnsafe(run_ends_view, i);
+        if (run_end <= last_run_end) {
+          ArrowErrorSet(
+              error,
+              "Every run end must be strictly greater than the previous run 
end, "
+              "but run_ends[%ld] is %ld and run_ends[%ld] is %ld",
+              (long)i, (long)run_end, (long)i - 1, (long)last_run_end);
+          return EINVAL;
+        }
+        last_run_end = run_end;
+      }
+      last_run_end = ArrowArrayViewGetIntUnsafe(run_ends_view, 
run_ends_view->length - 1);
+      if (last_run_end < (array_view->offset + array_view->length)) {
+        ArrowErrorSet(
+            error, "Last run end is %ld but it should >= %ld (offset: %ld, 
length: %ld)",
+            (long)last_run_end, (long)(array_view->offset + 
array_view->length),
+            (long)array_view->offset, (long)array_view->length);
         return EINVAL;
       }
-      last_run_end = run_end;
-    }
-    last_run_end = ArrowArrayViewGetIntUnsafe(run_ends_view, 
run_ends_view->length - 1);
-    if (last_run_end < (array_view->offset + array_view->length)) {
-      ArrowErrorSet(error,
-                    "Last run end is %ld but it should >= %ld (offset: %ld, 
length: %ld)",
-                    (long)last_run_end, (long)(array_view->offset + 
array_view->length),
-                    (long)array_view->offset, (long)array_view->length);
-      return EINVAL;
     }
   }
 
diff --git a/dist/nanoarrow.hpp b/dist/nanoarrow.hpp
index 0de2371b..5f8aabba 100644
--- a/dist/nanoarrow.hpp
+++ b/dist/nanoarrow.hpp
@@ -864,8 +864,8 @@ class ViewArrayStream {
   };
 
   internal::InputRange<Next> range_;
-  ArrowError* error_;
   ArrowErrorCode* code_;
+  ArrowError* error_;
   ArrowError internal_error_ = {};
   ArrowErrorCode internal_code_;
   bool code_was_accessed_ = false;

Reply via email to