cname = scope.mangle(Naming.bufstruct_prefix, name)
bufinfo = scope.declare_var(name="$%s" % cname, cname=cname,
type=PyrexTypes.c_py_buffer_type, pos=node.pos)
-
- bufinfo.used = True
+ if entry.is_arg:
+ bufinfo.used = True # otherwise, NameNode will mark whether it is used
def var(prefix, idx, initval):
cname = scope.mangle(prefix, "%d_%s" % (idx, name))
# goto statement in error cleanup above
code.put_label(code.return_label)
for entry in lenv.buffer_entries:
- code.putln("%s;" % Buffer.get_release_buffer_code(entry))
+ if entry.used:
+ code.putln("%s;" % Buffer.get_release_buffer_code(entry))
# ----- Return cleanup for both error and no-error return
code.put_label(code.return_from_error_cleanup_label)
if not Options.init_local_none:
# Buffer acquire and release tests
#
+@testcase
+def nousage():
+ """
+ >>> True
+ True
+ """
+ cdef object[int, 2] buf
+ # this used not to compile
+
@testcase
def acquire_release(o1, o2):
"""