From 8c5a12e126f6820e2a054303d2ffdce8fb759e12 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Mon, 2 Sep 2013 17:43:13 +0000 Subject: [PATCH] Fixes a bug that prevented processing of files > 4 GB. Thanks to Stephan X. Esterhuizen for sending the patch. git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@415 64b25241-fba3-4117-9849-534c7e92360d --- src/algorithms/libs/gnss_sdr_valve.cc | 9 ++++----- src/algorithms/libs/gnss_sdr_valve.h | 14 +++++++------- .../adapters/direct_resampler_conditioner.h | 2 +- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/algorithms/libs/gnss_sdr_valve.cc b/src/algorithms/libs/gnss_sdr_valve.cc index 2108909d1..b149911a6 100644 --- a/src/algorithms/libs/gnss_sdr_valve.cc +++ b/src/algorithms/libs/gnss_sdr_valve.cc @@ -39,7 +39,7 @@ using google::LogMessage; gnss_sdr_valve::gnss_sdr_valve (size_t sizeof_stream_item, - int nitems, + unsigned long long nitems, gr::msg_queue::sptr queue) : gr::sync_block("valve", gr::io_signature::make(1, 1, sizeof_stream_item), gr::io_signature::make(1, 1, sizeof_stream_item) ), @@ -49,7 +49,7 @@ gnss_sdr_valve::gnss_sdr_valve (size_t sizeof_stream_item, boost::shared_ptr gnss_sdr_make_valve (size_t sizeof_stream_item, - int nitems, + unsigned long long nitems, gr::msg_queue::sptr queue) { return boost::shared_ptr (new gnss_sdr_valve (sizeof_stream_item, nitems, queue)); @@ -69,9 +69,8 @@ int gnss_sdr_valve::work (int noutput_items, delete cmf; return -1; // Done! } - unsigned n = std::min(d_nitems - d_ncopied_items, noutput_items); - if (n == 0) - return 0; + unsigned long long n = std::min(d_nitems - d_ncopied_items, noutput_items); + if (n == 0) return 0; memcpy (output_items[0], input_items[0], n * input_signature()->sizeof_stream_item(0)); d_ncopied_items += n; return n; diff --git a/src/algorithms/libs/gnss_sdr_valve.h b/src/algorithms/libs/gnss_sdr_valve.h index 9594933dd..808647d4f 100644 --- a/src/algorithms/libs/gnss_sdr_valve.h +++ b/src/algorithms/libs/gnss_sdr_valve.h @@ -40,7 +40,7 @@ boost::shared_ptr gnss_sdr_make_valve (size_t sizeof_stream_item, - int nitems, + unsigned long long nitems, gr::msg_queue::sptr queue); /*! * \brief Implementation of a GNU Radio block that sends a STOP message to the @@ -49,13 +49,13 @@ boost::shared_ptr gnss_sdr_make_valve (size_t sizeof_stream_item, class gnss_sdr_valve : public gr::sync_block { friend boost::shared_ptr gnss_sdr_make_valve(size_t sizeof_stream_item, - int nitems, - gr::msg_queue::sptr queue); + unsigned long long nitems, + gr::msg_queue::sptr queue); gnss_sdr_valve (size_t sizeof_stream_item, - int nitems, - gr::msg_queue::sptr queue); - int d_nitems; - int d_ncopied_items; + unsigned long long nitems, + gr::msg_queue::sptr queue); + unsigned long long d_nitems; + unsigned long long d_ncopied_items; gr::msg_queue::sptr d_queue; public: diff --git a/src/algorithms/resampler/adapters/direct_resampler_conditioner.h b/src/algorithms/resampler/adapters/direct_resampler_conditioner.h index 9616ec3fa..a8461cb17 100644 --- a/src/algorithms/resampler/adapters/direct_resampler_conditioner.h +++ b/src/algorithms/resampler/adapters/direct_resampler_conditioner.h @@ -74,7 +74,7 @@ private: unsigned int out_stream_; std::string item_type_; size_t item_size_; - long samples_; + unsigned long long samples_; bool dump_; std::string dump_filename_; double sample_freq_in_;