From 55cf53fd0f5594eb701b5760729fdc2bd4a70584 Mon Sep 17 00:00:00 2001 From: Rahul Kayaith Date: Thu, 2 Mar 2023 16:06:44 -0500 Subject: [mlir][Parser] Make parse{Attribute,Type} null-terminate input `parseAttribute` and `parseType` require null-terminated strings as input, but this isn't great considering the argument type is `StringRef`. This changes them to copy to a null-terminated buffer by default, with a `isKnownNullTerminated` flag added to disable the copying. closes #58964 Reviewed By: rriddle, kuhar, lattner Differential Revision: https://reviews.llvm.org/D145182 --- mlir/lib/Bytecode/Reader/BytecodeReader.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'mlir/lib/Bytecode/Reader/BytecodeReader.cpp') diff --git a/mlir/lib/Bytecode/Reader/BytecodeReader.cpp b/mlir/lib/Bytecode/Reader/BytecodeReader.cpp index f009621..5e71c3a 100644 --- a/mlir/lib/Bytecode/Reader/BytecodeReader.cpp +++ b/mlir/lib/Bytecode/Reader/BytecodeReader.cpp @@ -1031,9 +1031,11 @@ LogicalResult AttrTypeReader::parseAsmEntry(T &result, EncodingReader &reader, size_t numRead = 0; MLIRContext *context = fileLoc->getContext(); if constexpr (std::is_same_v) - result = ::parseType(asmStr, context, &numRead); + result = + ::parseType(asmStr, context, &numRead, /*isKnownNullTerminated=*/true); else - result = ::parseAttribute(asmStr, context, Type(), &numRead); + result = ::parseAttribute(asmStr, context, Type(), &numRead, + /*isKnownNullTerminated=*/true); if (!result) return failure(); -- cgit v1.1