feature/IO-3052-Skia-Canvas-Handler: Fix missing checks

Signed-off-by: Dave Richer <dave@imexsystems.ca>
This commit is contained in:
Dave Richer
2024-12-05 12:29:11 -08:00
parent 8fbd08d57f
commit bfde72eed8

View File

@@ -77,21 +77,36 @@ const processCanvasRequest = async (req, res, isSkia = false) => {
const configuration = getChartConfiguration(keys, values, override);
// Placeholders to allow fine control over GAC
let canvas = null;
let ctx = null;
let chart = null;
let chartImage = null;
try {
const canvas = isSkia ? new Canvas(width, height) : createCanvas(width, height);
const ctx = canvas.getContext("2d");
// Create the canvas
canvas = isSkia ? new Canvas(width, height) : createCanvas(width, height);
ctx = canvas.getContext("2d");
// Render the chart
const chart = new Chart(ctx, configuration);
chart = new Chart(ctx, configuration);
// Generate and send the image
const chartImage = isSkia ? (await canvas.toBuffer("image/png")).toString("base64") : canvas.toDataURL();
chartImage = isSkia ? (await canvas.toBuffer("image/png")).toString("base64") : canvas.toDataURL();
chart.destroy();
res.status(200).send(isSkia ? `data:image/png;base64,${chartImage}` : chartImage);
} catch (error) {
// Log the error and send the response
logger.log("canvas-error", "error", "jsr", null, { error: error.message });
res.status(500).send("Failed to generate canvas.");
} finally {
// Cleanup resources
if (chart) {
chart.destroy();
}
ctx = null; // Explicitly nullify for garbage collection
canvas = null; // Explicitly nullify for garbage collection
chartImage = null;
}
};