From 4bed4fd96ac893b28ec2a7550a2fb1b4a69f7b4d Mon Sep 17 00:00:00 2001 From: ZhuangYumin Date: Sun, 10 Mar 2024 15:34:52 +0000 Subject: [PATCH] fix compare error --- priority_queue/src/priority_queue.hpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/priority_queue/src/priority_queue.hpp b/priority_queue/src/priority_queue.hpp index 1c10465..35ce711 100644 --- a/priority_queue/src/priority_queue.hpp +++ b/priority_queue/src/priority_queue.hpp @@ -82,7 +82,12 @@ class priority_queue { */ void push(const T &e) { Node *new_node = new Node(e); - root = SkewMerge(root, new_node); + try { + root = SkewMerge(root, new_node); + } catch (...) { + delete new_node; + throw; + } ++node_count; } /** @@ -111,6 +116,7 @@ class priority_queue { * clear the other priority_queue. */ void merge(priority_queue &other) { + if (other.root == root) return; root = SkewMerge(root, other.root); node_count += other.node_count; other.root = nullptr;