1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2025-07-02 01:52:58 +00:00

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
This commit is contained in:
Carles Fernandez 2013-09-02 17:43:13 +00:00
parent 31f73ed40d
commit 8c5a12e126
3 changed files with 12 additions and 13 deletions

View File

@ -39,7 +39,7 @@
using google::LogMessage; using google::LogMessage;
gnss_sdr_valve::gnss_sdr_valve (size_t sizeof_stream_item, 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::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),
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<gr::block> gnss_sdr_make_valve (size_t sizeof_stream_item, boost::shared_ptr<gr::block> gnss_sdr_make_valve (size_t sizeof_stream_item,
int nitems, unsigned long long nitems,
gr::msg_queue::sptr queue) gr::msg_queue::sptr queue)
{ {
return boost::shared_ptr<gnss_sdr_valve> (new gnss_sdr_valve (sizeof_stream_item, nitems, queue)); return boost::shared_ptr<gnss_sdr_valve> (new gnss_sdr_valve (sizeof_stream_item, nitems, queue));
@ -69,9 +69,8 @@ int gnss_sdr_valve::work (int noutput_items,
delete cmf; delete cmf;
return -1; // Done! return -1; // Done!
} }
unsigned n = std::min(d_nitems - d_ncopied_items, noutput_items); unsigned long long n = std::min(d_nitems - d_ncopied_items, noutput_items);
if (n == 0) if (n == 0) return 0;
return 0;
memcpy (output_items[0], input_items[0], n * input_signature()->sizeof_stream_item(0)); memcpy (output_items[0], input_items[0], n * input_signature()->sizeof_stream_item(0));
d_ncopied_items += n; d_ncopied_items += n;
return n; return n;

View File

@ -40,7 +40,7 @@
boost::shared_ptr<gr::block> gnss_sdr_make_valve (size_t sizeof_stream_item, boost::shared_ptr<gr::block> gnss_sdr_make_valve (size_t sizeof_stream_item,
int nitems, unsigned long long nitems,
gr::msg_queue::sptr queue); gr::msg_queue::sptr queue);
/*! /*!
* \brief Implementation of a GNU Radio block that sends a STOP message to the * \brief Implementation of a GNU Radio block that sends a STOP message to the
@ -49,13 +49,13 @@ boost::shared_ptr<gr::block> gnss_sdr_make_valve (size_t sizeof_stream_item,
class gnss_sdr_valve : public gr::sync_block class gnss_sdr_valve : public gr::sync_block
{ {
friend boost::shared_ptr<gr::block> gnss_sdr_make_valve(size_t sizeof_stream_item, friend boost::shared_ptr<gr::block> gnss_sdr_make_valve(size_t sizeof_stream_item,
int nitems, unsigned long long nitems,
gr::msg_queue::sptr queue); gr::msg_queue::sptr queue);
gnss_sdr_valve (size_t sizeof_stream_item, gnss_sdr_valve (size_t sizeof_stream_item,
int nitems, unsigned long long nitems,
gr::msg_queue::sptr queue); gr::msg_queue::sptr queue);
int d_nitems; unsigned long long d_nitems;
int d_ncopied_items; unsigned long long d_ncopied_items;
gr::msg_queue::sptr d_queue; gr::msg_queue::sptr d_queue;
public: public:

View File

@ -74,7 +74,7 @@ private:
unsigned int out_stream_; unsigned int out_stream_;
std::string item_type_; std::string item_type_;
size_t item_size_; size_t item_size_;
long samples_; unsigned long long samples_;
bool dump_; bool dump_;
std::string dump_filename_; std::string dump_filename_;
double sample_freq_in_; double sample_freq_in_;