From 538a80c5ab77efeaf4470af99c41bd6cc0a684d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20Gro=C3=9F?= Date: Sun, 21 Aug 2022 15:37:09 +0200 Subject: [PATCH] Fix string to float conversion for systems using anything other than a period as decimal separator --- libraries/model-serializers/src/OBJSerializer.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libraries/model-serializers/src/OBJSerializer.cpp b/libraries/model-serializers/src/OBJSerializer.cpp index 7acc663828..df9d44a5e0 100644 --- a/libraries/model-serializers/src/OBJSerializer.cpp +++ b/libraries/model-serializers/src/OBJSerializer.cpp @@ -4,6 +4,7 @@ // // Created by Seth Alves on 3/7/15. // Copyright 2013 High Fidelity, Inc. +// Copyright 2022 Overte e.V. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html @@ -59,7 +60,11 @@ const hifi::ByteArray OBJTokenizer::getLineAsDatum() { } float OBJTokenizer::getFloat() { - return std::stof((nextToken() != OBJTokenizer::DATUM_TOKEN) ? nullptr : getDatum().data()); + std::istringstream ss((nextToken() != OBJTokenizer::DATUM_TOKEN) ? nullptr : getDatum().data()); + ss.imbue(std::locale::classic()); + float f; + ss >> f; + return f; } int OBJTokenizer::nextToken(bool allowSpaceChar /*= false*/) {