Skip to content

Commit 72e7f86

Browse files
committedSep 19, 2020
fix memory leak within debug instance
1 parent 27152ca commit 72e7f86

File tree

1 file changed

+10
-23
lines changed

1 file changed

+10
-23
lines changed
 

‎src/common.js

+10-23
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,6 @@ function setup(env) {
1717
createDebug[key] = env[key];
1818
});
1919

20-
/**
21-
* Active `debug` instances.
22-
*/
23-
createDebug.instances = [];
24-
2520
/**
2621
* The currently active debug mode names, and names to skip.
2722
*/
@@ -63,6 +58,7 @@ function setup(env) {
6358
*/
6459
function createDebug(namespace) {
6560
let prevTime;
61+
let enableOverride = null;
6662

6763
function debug(...args) {
6864
// Disabled?
@@ -115,31 +111,27 @@ function setup(env) {
115111
}
116112

117113
debug.namespace = namespace;
118-
debug.enabled = createDebug.enabled(namespace);
119114
debug.useColors = createDebug.useColors();
120115
debug.color = createDebug.selectColor(namespace);
121-
debug.destroy = destroy;
122116
debug.extend = extend;
123117

118+
Object.defineProperty(debug, 'enabled', {
119+
enumerable: true,
120+
configurable: false,
121+
get: () => enableOverride === null ? createDebug.enabled(namespace) : enableOverride,
122+
set: v => {
123+
enableOverride = v;
124+
}
125+
});
126+
124127
// Env-specific initialization logic for debug instances
125128
if (typeof createDebug.init === 'function') {
126129
createDebug.init(debug);
127130
}
128131

129-
createDebug.instances.push(debug);
130-
131132
return debug;
132133
}
133134

134-
function destroy() {
135-
const index = createDebug.instances.indexOf(this);
136-
if (index !== -1) {
137-
createDebug.instances.splice(index, 1);
138-
return true;
139-
}
140-
return false;
141-
}
142-
143135
function extend(namespace, delimiter) {
144136
const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);
145137
newDebug.log = this.log;
@@ -177,11 +169,6 @@ function setup(env) {
177169
createDebug.names.push(new RegExp('^' + namespaces + '$'));
178170
}
179171
}
180-
181-
for (i = 0; i < createDebug.instances.length; i++) {
182-
const instance = createDebug.instances[i];
183-
instance.enabled = createDebug.enabled(instance.namespace);
184-
}
185172
}
186173

187174
/**

0 commit comments

Comments
 (0)
Please sign in to comment.