aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>2024-09-19 14:38:48 +0200
committerP-E-P <32375388+P-E-P@users.noreply.github.com>2024-09-19 13:16:16 +0000
commit522576d07f042bc048fcc2f64ab91014d6f88f47 (patch)
tree4edac3fdd855c64e0bca84f4bd31849902652495 /gcc
parent67bc0f69b46b2e4c335017aba3bc1218574aad7a (diff)
downloadgcc-522576d07f042bc048fcc2f64ab91014d6f88f47.zip
gcc-522576d07f042bc048fcc2f64ab91014d6f88f47.tar.gz
gcc-522576d07f042bc048fcc2f64ab91014d6f88f47.tar.bz2
Check if the type has been correctly resolved
We did not check the optional was valid, this lead to rogue dereference and undefined behaviors. gcc/rust/ChangeLog: * resolve/rust-late-name-resolver-2.0.cc (Late::visit): Add optional check. Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/resolve/rust-late-name-resolver-2.0.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/rust/resolve/rust-late-name-resolver-2.0.cc b/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
index 995c022..f171f14 100644
--- a/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
+++ b/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
@@ -23,6 +23,7 @@
#include "rust-default-resolver.h"
#include "rust-name-resolution-context.h"
#include "rust-path.h"
+#include "rust-system.h"
#include "rust-tyty.h"
#include "rust-hir-type-check.h"
@@ -223,9 +224,11 @@ Late::visit (AST::TypePath &type)
// typepath-like path resolution? that sounds good
auto resolved = ctx.types.get (type.get_segments ().back ()->as_string ());
-
- ctx.map_usage (Usage (type.get_node_id ()),
- Definition (resolved->get_node_id ()));
+ if (resolved)
+ ctx.map_usage (Usage (type.get_node_id ()),
+ Definition (resolved->get_node_id ()));
+ else
+ rust_unreachable ();
}
void