fix int64_t truncation and error handling in get_all_device_entries
diff --git a/cpp/src/file/tsfile_io_reader.cc b/cpp/src/file/tsfile_io_reader.cc
index 61a7546..296556c 100644
--- a/cpp/src/file/tsfile_io_reader.cc
+++ b/cpp/src/file/tsfile_io_reader.cc
@@ -187,8 +187,8 @@
 
     is_aligned = is_aligned_device(top_node);
     if (is_aligned) {
-        if (RET_FAIL(
-                get_time_column_metadata(top_node, time_timeseries_index, pa))) {
+        if (RET_FAIL(get_time_column_metadata(top_node, time_timeseries_index,
+                                              pa))) {
             return ret;
         }
     }
diff --git a/cpp/src/reader/tsfile_reader.cc b/cpp/src/reader/tsfile_reader.cc
index 9e50f39..8d9d9b5 100644
--- a/cpp/src/reader/tsfile_reader.cc
+++ b/cpp/src/reader/tsfile_reader.cc
@@ -45,22 +45,21 @@
             DeviceMetaEntry entry;
             entry.device_id = index_node->children_[i]->get_device_id();
             entry.start_offset = index_node->children_[i]->get_offset();
-            entry.end_offset =
-                (i + 1 < index_node->children_.size())
-                    ? index_node->children_[i + 1]->get_offset()
-                    : index_node->end_offset_;
+            entry.end_offset = (i + 1 < index_node->children_.size())
+                                   ? index_node->children_[i + 1]->get_offset()
+                                   : index_node->end_offset_;
             entries.push_back(entry);
         }
     } else {
         for (size_t idx = 0; idx < index_node->children_.size(); idx++) {
             auto meta_index_entry = index_node->children_[idx];
-            int start_offset = meta_index_entry->get_offset();
-            int end_offset = index_node->end_offset_;
+            int64_t start_offset = meta_index_entry->get_offset();
+            int64_t end_offset = index_node->end_offset_;
             if (idx + 1 < index_node->children_.size()) {
                 end_offset = index_node->children_[idx + 1]->get_offset();
             }
             ASSERT(end_offset - start_offset > 0);
-            const int32_t read_size = (int32_t)end_offset - start_offset;
+            const int32_t read_size = (int32_t)(end_offset - start_offset);
             int32_t ret_read_len = 0;
             char* data_buf = (char*)pa.alloc(read_size);
             void* m_idx_node_buf = pa.alloc(sizeof(MetaIndexNode));
@@ -76,11 +75,14 @@
                 });
             if (RET_FAIL(read_file->read(start_offset, data_buf, read_size,
                                          ret_read_len))) {
-            } else if (RET_FAIL(top_node->device_deserialize_from(
-                           data_buf, read_size))) {
+            } else if (RET_FAIL(top_node->device_deserialize_from(data_buf,
+                                                                  read_size))) {
             } else {
                 ret = get_all_device_entries(entries, top_node, read_file, pa);
             }
+            if (ret != E_OK) {
+                return ret;
+            }
         }
     }
     return ret;
@@ -468,7 +470,10 @@
     pa.init(512, MOD_TSFILE_READER);
     std::vector<DeviceMetaEntry> entries;
     for (auto& table_entry : tsfile_meta->table_metadata_index_node_map_) {
-        get_all_device_entries(entries, table_entry.second, read_file_, pa);
+        if (get_all_device_entries(entries, table_entry.second, read_file_,
+                                   pa) != E_OK) {
+            return result;
+        }
     }
 
     auto noop_deleter = [](ITimeseriesIndex*) {};