diff options
author | Benoit Steiner <bsteiner@google.com> | 2018-01-04 13:42:13 -0800 |
---|---|---|
committer | TensorFlower Gardener <gardener@tensorflow.org> | 2018-01-04 13:45:42 -0800 |
commit | 698bc996f7190f5cd836d48d29b8c1b3ddcd37c2 (patch) | |
tree | 39bc4c4e1d504c9c6d99e0a12f856eda4f5a5190 | |
parent | cc6a4bb1952642f481875e41183e0749d6f5dbaa (diff) |
Fixed the implementation of DataTypeString to avoid a stack overflow when
processing invalid types
PiperOrigin-RevId: 180839917
-rw-r--r-- | tensorflow/core/framework/types.cc | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/tensorflow/core/framework/types.cc b/tensorflow/core/framework/types.cc index 58354d6f4e..8bc4403094 100644 --- a/tensorflow/core/framework/types.cc +++ b/tensorflow/core/framework/types.cc @@ -47,11 +47,8 @@ const std::string DeviceName<Eigen::GpuDevice>::value = DEVICE_GPU; const std::string DeviceName<Eigen::SyclDevice>::value = DEVICE_SYCL; #endif // TENSORFLOW_USE_SYCL -string DataTypeString(DataType dtype) { - if (IsRefType(dtype)) { - DataType non_ref = static_cast<DataType>(dtype - kDataTypeRefOffset); - return strings::StrCat(DataTypeString(non_ref), "_ref"); - } +namespace { +string DataTypeStringInternal(DataType dtype) { switch (dtype) { case DT_INVALID: return "INVALID"; @@ -106,6 +103,15 @@ string DataTypeString(DataType dtype) { return strings::StrCat("unknown dtype enum (", dtype, ")"); } } +} // end namespace + +string DataTypeString(DataType dtype) { + if (IsRefType(dtype)) { + DataType non_ref = static_cast<DataType>(dtype - kDataTypeRefOffset); + return strings::StrCat(DataTypeStringInternal(non_ref), "_ref"); + } + return DataTypeStringInternal(dtype); +} bool DataTypeFromString(StringPiece sp, DataType* dt) { if (sp.ends_with("_ref")) { |