From 7037b5d9bc71a4f2eeab7d73cb00d124da6fe3b5 Mon Sep 17 00:00:00 2001 From: Kyle Ambroff-Kao Date: Mon, 20 Jan 2020 15:37:06 -0800 Subject: [PATCH] support/Archivable: Reset errno in validate_instantiation() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit validate_instantiation(BMessage*, const char*) sets errno for invalid input, or if the requested class is not found, but it doesn't reset errno to B_OK if validation succeeds. I verified that in BeOS R5, errno is set to B_OK if validate_instantiation succeeds. This fixes BHandler::Instantiate2 and BHandler::Instantiate3 tests. Change-Id: I531777e6ba47e9635da2da1fc8c8103bb233b0f3 Reviewed-on: https://review.haiku-os.org/c/haiku/+/2136 Reviewed-by: Axel Dörfler Reviewed-by: Adrien Destugues --- src/kits/support/Archivable.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/kits/support/Archivable.cpp b/src/kits/support/Archivable.cpp index d819d88d56..18fee08944 100644 --- a/src/kits/support/Archivable.cpp +++ b/src/kits/support/Archivable.cpp @@ -762,8 +762,10 @@ validate_instantiation(BMessage* from, const char* className) const char* archiveClassName; for (int32 index = 0; from->FindString(B_CLASS_FIELD, index, &archiveClassName) == B_OK; ++index) { - if (name == archiveClassName) + if (name == archiveClassName) { + errno = B_OK; return true; + } } if (!add_private_namespace(name))