OpenBugger icon indicating copy to clipboard operation
OpenBugger copied to clipboard

Bug type: global variables

Open mashdragon opened this issue 2 years ago • 2 comments

A bug type I've come across myself has been with forgetting to use the global keyword with global variables. Here's an example:

# A globally accessible list
current_labels = []

def reset_current_labels():
    """ Clears the label list """
    current_labels = []

The bug is that calling reset_current_labels() will not modify current_labels:

>>> current_labels.append('delete me')
>>> current_labels
['delete me']
>>> reset_current_labels()
>>> current_labels
['delete me']

The correct code would be

# A globally accessible list
current_labels = []

def reset_current_labels():
    """ Clears the label list """
    global current_labels
    current_labels = []

So to bug the code, you would remove one or more global statements.

mashdragon avatar Jan 10 '23 20:01 mashdragon

Thanks for the suggestion, would this script satisfy your example ? (some of the bugs are unchecked and might not work ) https://github.com/furlat/OpenBugger/blob/3b0a6e597983faac5f13fbae84a68c1ef78c86ef/logic/logic_injector.py#L401

furlat avatar Jan 10 '23 21:01 furlat

Almost. I think to reproduce the bug, the entire global declaration should be missing.

mashdragon avatar Jan 10 '23 23:01 mashdragon