summaryrefslogtreecommitdiff
path: root/gr-blocks/lib/head_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-blocks/lib/head_impl.cc')
-rw-r--r--gr-blocks/lib/head_impl.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/gr-blocks/lib/head_impl.cc b/gr-blocks/lib/head_impl.cc
index 0ee22682d0..567a12d1df 100644
--- a/gr-blocks/lib/head_impl.cc
+++ b/gr-blocks/lib/head_impl.cc
@@ -1,6 +1,7 @@
/* -*- c++ -*- */
/*
* Copyright 2004,2009,2013 Free Software Foundation, Inc.
+ * Copyright 2021 Marcus Müller
*
* This file is part of GNU Radio
*
@@ -27,7 +28,7 @@ head::sptr head::make(size_t sizeof_stream_item, uint64_t nitems)
head_impl::head_impl(size_t sizeof_stream_item, uint64_t nitems)
: sync_block("head",
io_signature::make(1, 1, sizeof_stream_item),
- io_signature::make(1, 1, sizeof_stream_item)),
+ io_signature::make(0, 1, sizeof_stream_item)),
d_nitems(nitems),
d_ncopied_items(0)
{
@@ -47,7 +48,12 @@ int head_impl::work(int noutput_items,
if (n == 0)
return 0;
- memcpy(output_items[0], input_items[0], n * input_signature()->sizeof_stream_item(0));
+ // can have zero or one output port, if zero, don't copy
+ if (!output_items.empty()) {
+ memcpy(output_items[0],
+ input_items[0],
+ n * input_signature()->sizeof_stream_item(0));
+ }
d_ncopied_items += n;
return n;