diff --git a/paver/tasks.py b/paver/tasks.py
index 2eb1c4a..3498321 100644
--- a/paver/tasks.py
+++ b/paver/tasks.py
@@ -147,11 +147,11 @@ class Environment(object):
             for option in options:
                 task._set_value_to_task(task_name, option, None, options[option])
 
-        if args and task.consume_args > 0:
+        if args is not None and task.consume_args > 0:
             args = _consume_nargs(task, args)
         elif args and (task.consume_args == 0):
             raise BuildFailure("Task %s is not decorated with @consume_(n)args,"
-                                "but has been called with them")
+                                "but has been called with them" % task)
         task()
 
     def _run_task(self, task_name, needs, func):

When a empty args list is given to call_task, the args of the previous task are used.
I have a task that calls another task. The first one give 0 to n arguments to the the second one. The first needs a third task that is calling a fourth one with some arguments. When the first one gives at least 1 argument, the behavior is correct. But when the first one uses an empty list of arguments, the arguments of the call of the third to the fourth are reused.

```
from paver.easy import *

@task
@needs('specific_dep')
@consume_args
def my_task(args):
    call_task('the_other_task', args=args)

@task
@consume_args
def the_other_task(args):
    info('Doing the thing with the args: %s', args)

@task
def specific_dep():
    call_task('generic_dep', args=['specific'])

@task
@consume_args
def generic_dep(args):
    name, = args
    info('Loading the dependency %s', name)
```

```
% ./venv/bin/paver my_task args
---> pavement.my_task
---> pavement.specific_dep
---> pavement.generic_dep
Loading the dependency specific
---> pavement.the_other_task
Doing the thing with the args: ['args'] 
% ./venv/bin/paver my_task
---> pavement.my_task
---> pavement.specific_dep
---> pavement.generic_dep
Loading the dependency specific
---> pavement.the_other_task
Doing the thing with the args: ['specific'] ### Should be Doing the thing with the args: []
```
diff --git a/paver/tests/test_tasks.py b/paver/tests/test_tasks.py
index b8a419c..62419d7 100644
--- a/paver/tests/test_tasks.py
+++ b/paver/tests/test_tasks.py
@@ -847,6 +847,25 @@ def test_calling_task_with_arguments():
 
     tasks._process_commands(['t1'])
 
+def test_calling_task_with_empty_arguments():
+    @tasks.task
+    def t1():
+        env.call_task('t3', args=['argument1'])
+        env.call_task('t2', args=[])
+
+    @tasks.task
+    @tasks.consume_args
+    def t2(args):
+        assert args == []
+
+    @tasks.task
+    @tasks.consume_args
+    def t3(args):
+        assert args == ['argument1']
+
+    env = _set_environment(t1=t1, t2=t2, t3=t3)
+    tasks._process_commands(['t1'])
+
 def test_calling_nonconsuming_task_with_arguments():
     @tasks.task
     def t2():

pip install -e .
parse_log_pytest
pytest
numpy>=1.16.0 pytest
3.9
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
exceptiongroup @ file:///croot/exceptiongroup_1706031385326/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
numpy==2.0.2
packaging @ file:///croot/packaging_1734472117206/work
-e git+https://github.com/paver/paver.git@e5e75eefb3ccbef2b112419740661d59017d043d#egg=Paver
pluggy @ file:///croot/pluggy_1733169602837/work
pytest @ file:///croot/pytest_1738938843180/work
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work

name: paver
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - exceptiongroup=1.2.0=py39h06a4308_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - packaging=24.2=py39h06a4308_0
  - pip=25.0=py39h06a4308_0
  - pluggy=1.5.0=py39h06a4308_0
  - pytest=8.3.4=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py39h06a4308_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - numpy==2.0.2
prefix: /opt/conda/envs/paver

paver/tests/test_tasks.py::test_calling_task_with_empty_arguments
paver/tests/test_tasks.py::test_basic_dependencies paver/tests/test_tasks.py::test_longname_resolution_in_dependencies paver/tests/test_tasks.py::test_chained_dependencies paver/tests/test_tasks.py::test_backwards_compatible_needs paver/tests/test_tasks.py::test_tasks_dont_repeat paver/tests/test_tasks.py::test_basic_command_line paver/tests/test_tasks.py::test_list_tasks paver/tests/test_tasks.py::test_environment_insertion paver/tests/test_tasks.py::test_add_options_to_environment paver/tests/test_tasks.py::test_shortname_access paver/tests/test_tasks.py::test_longname_access paver/tests/test_tasks.py::test_task_command_line_options paver/tests/test_tasks.py::test_setting_of_options_with_equals paver/tests/test_tasks.py::test_options_inherited_via_needs paver/tests/test_tasks.py::test_options_inherited_via_needs_even_from_grandparents paver/tests/test_tasks.py::test_options_shouldnt_overlap paver/tests/test_tasks.py::test_options_shouldnt_overlap_when_bad_task_specified paver/tests/test_tasks.py::test_options_may_overlap_if_explicitly_allowed paver/tests/test_tasks.py::test_exactly_same_parameters_must_be_specified_in_order_to_allow_sharing paver/tests/test_tasks.py::test_dest_parameter_should_map_opt_to_property paver/tests/test_tasks.py::test_dotted_options paver/tests/test_tasks.py::test_dry_run paver/tests/test_tasks.py::test_consume_args paver/tests/test_tasks.py::test_consume_nargs paver/tests/test_tasks.py::test_consume_nargs_and_options paver/tests/test_tasks.py::test_optional_args_in_tasks paver/tests/test_tasks.py::test_debug_logging paver/tests/test_tasks.py::test_base_logging paver/tests/test_tasks.py::test_error_show_up_no_matter_what paver/tests/test_tasks.py::test_all_messages_for_a_task_are_captured paver/tests/test_tasks.py::test_messages_with_formatting_and_no_args_still_work paver/tests/test_tasks.py::test_alternate_pavement_option paver/tests/test_tasks.py::test_captured_output_shows_up_on_exception paver/tests/test_tasks.py::test_calling_subpavement paver/tests/test_tasks.py::test_task_finders paver/tests/test_tasks.py::test_calling_a_function_rather_than_task paver/tests/test_tasks.py::test_depending_on_a_function_rather_than_task paver/tests/test_tasks.py::test_description_retrieval_trial paver/tests/test_tasks.py::test_description_empty_without_docstring paver/tests/test_tasks.py::test_description_retrieval_first_sentence paver/tests/test_tasks.py::test_description_retrieval_first_sentence_even_with_version_numbers paver/tests/test_tasks.py::test_auto_task_is_not_run_with_noauto paver/tests/test_tasks.py::test_auto_task_is_run_when_present paver/tests/test_tasks.py::test_task_can_be_called_repeatedly paver/tests/test_tasks.py::test_options_passed_to_task paver/tests/test_tasks.py::test_calling_task_with_option_arguments paver/tests/test_tasks.py::test_calling_task_with_arguments_do_not_overwrite_it_for_other_tasks paver/tests/test_tasks.py::test_options_might_be_provided_if_task_might_be_called paver/tests/test_tasks.py::test_calling_task_with_arguments paver/tests/test_tasks.py::test_calling_nonconsuming_task_with_arguments paver/tests/test_tasks.py::test_options_may_overlap_between_multiple_tasks_even_when_specified_in_reverse_order paver/tests/test_tasks.py::test_options_might_be_shared_both_way
paver/tasks.py
paver/tasks.py