Merge pull request #386 from gnh1201/dev
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
Deploy Jekyll with GitHub Pages dependencies preinstalled / build (push) Has been cancelled
Deploy Jekyll with GitHub Pages dependencies preinstalled / deploy (push) Has been cancelled

Add custom dispose to UseObject and update pipe-ipc
This commit is contained in:
Namhyeon Go 2026-01-21 18:16:44 +09:00 committed by GitHub
commit 5aa8285427
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 29 additions and 14 deletions

23
app.js
View File

@ -188,18 +188,27 @@ if (typeof CreateObject === "undefined") {
}
if (typeof UseObject === "undefined") {
var UseObject = function(progId, callback) {
var _dispose = function(obj) {
try {
obj.Close();
} catch (e) { /* ignore */ }
};
var UseObject = function(progId, callback, dispose, fallback) {
if (typeof callback !== "function") {
return null;
}
if (typeof dispose !== "function") {
dispose = function(obj) {
try {
obj.Close();
} catch (e) { /* ignore */ }
};
}
var obj = CreateObject(progId);
try {
return callback(obj);
} catch (e) {
return (typeof fallback === "function" ?
fallback(obj, e) : null);
} finally {
_dispose(obj);
dispose(obj);
obj = null;
}
}

View File

@ -160,19 +160,22 @@ function Converter() {
};
this.repositionObject = function(stream, position) {
position = (position !== "number" ? 0 : position);
position = (typeof position !== "number" ? 0 : position);
var _dispose = function() {}; // prevent dispose after repositionObject
return UseObject("ADODB.Stream", function(newStream) {
newStream.Type = adTypeBinary;
newStream.Mode = adModeReadWrite;
newStream.Open();
stream.Position = position;
stream.CopyTo(newStream);
stream.Flush();
stream.Close();
return newStream;
});
}, _dispose);
};
}
@ -413,9 +416,12 @@ function PipeIPC() {
stream.Charset = charset;
stream.Open();
stream.WriteText(str);
stream = (new Converter()).repositionObject(stream, 3);
stream.SaveToFile(dst, adSaveCreateOverWrite);
stream.Close();
var newStream = (new Converter()).repositionObject(stream, 3);
newStream.SaveToFile(dst, adSaveCreateOverWrite);
newStream.Close();
// will be auto dispose by UseObject
});
// Set a result
@ -565,7 +571,7 @@ exports.adSaveCreateNotExist = adSaveCreateNotExist;
exports.adSaveCreateOverWrite = adSaveCreateOverWrite;
exports.adModeReadWrite = adModeReadWrite;
exports.VERSIONINFO = "PIPE-based IPC Module (pipe-ipc.js) version 0.1.24";
exports.VERSIONINFO = "PIPE-based IPC Module (pipe-ipc.js) version 0.1.26";
exports.AUTHOR = "gnh1201@catswords.re.kr";
exports.global = global;
exports.require = require;