diff options
-rw-r--r-- | base/SConscript | 1 | ||||
-rw-r--r-- | base/build/base.vcproj | 4 | ||||
-rw-r--r-- | base/build/base_unittests.vcproj | 4 | ||||
-rw-r--r-- | base/fixed_string.h | 96 | ||||
-rw-r--r-- | base/fixed_string_unittest.cc | 64 | ||||
-rw-r--r-- | chrome/browser/about_internets_status_view.cc | 11 | ||||
-rw-r--r-- | webkit/tools/test_shell/test_shell_main.cc | 33 |
7 files changed, 23 insertions, 190 deletions
diff --git a/base/SConscript b/base/SConscript index 1635f34..ead95f3 100644 --- a/base/SConscript +++ b/base/SConscript @@ -216,7 +216,6 @@ test_files = [ 'condition_variable_test.cc', 'file_util_unittest.cc', 'file_version_info_unittest.cc', - 'fixed_string_unittest.cc', 'gfx/convolver_unittest.cc', 'gfx/image_operations_unittest.cc', 'gfx/native_theme_unittest.cc', diff --git a/base/build/base.vcproj b/base/build/base.vcproj index 0e23ba5..5de82ba 100644 --- a/base/build/base.vcproj +++ b/base/build/base.vcproj @@ -294,10 +294,6 @@ > </File> <File - RelativePath="..\fixed_string.h" - > - </File> - <File RelativePath="..\hash_tables.h" > </File> diff --git a/base/build/base_unittests.vcproj b/base/build/base_unittests.vcproj index ae77e67..bd22f7f 100644 --- a/base/build/base_unittests.vcproj +++ b/base/build/base_unittests.vcproj @@ -200,10 +200,6 @@ > </File> <File - RelativePath="..\fixed_string_unittest.cc" - > - </File> - <File RelativePath="..\histogram_test.cc" > </File> diff --git a/base/fixed_string.h b/base/fixed_string.h deleted file mode 100644 index 857b057..0000000 --- a/base/fixed_string.h +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2008, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#ifndef BASE_FIXED_STRING_H__ -#define BASE_FIXED_STRING_H__ - -#include <string.h> - -#include "base/string_util.h" - -// This class manages a fixed-size, null-terminated string buffer. It is meant -// to be allocated on the stack, and it makes no use of the heap internally. In -// most cases you'll just want to use a std::(w)string, but when you need to -// avoid the heap, you can use this class instead. -// -// Methods are provided to read the null-terminated buffer and to append data -// to the buffer, and once the buffer fills-up, it simply discards any extra -// append calls. -// -// Since this object clips if the internal fixed buffer is exceeded, it is -// appropriate for exception handlers where the heap may be corrupted. Fixed -// buffers that overflow onto the heap are provided by Stack[W]String. -// (see stack_container.h). -template <class CharT, int MaxSize> -class FixedString { - public: - typedef CharTraits<CharT> char_traits; - - FixedString() : index_(0), truncated_(false) { - buf_[0] = CharT(0); - } - - // Returns true if the Append ever failed. - bool was_truncated() const { return truncated_; } - - // Returns the number of characters in the string, excluding the null - // terminator. - size_t size() const { return index_; } - - // Returns the null-terminated string. - const CharT* get() const { return buf_; } - CharT* get() { return buf_; } - - // Append an array of characters. The operation is bounds checked, and if - // there is insufficient room, then the was_truncated() flag is set to true. - void Append(const CharT* s, size_t n) { - if (char_traits::copy_num(buf_ + index_, arraysize(buf_) - index_, s, n)) { - index_ += n; - } else { - truncated_ = true; - } - } - - // Append a null-terminated string. - void Append(const CharT* s) { - Append(s, char_traits::length(s)); - } - - // Append a single character. - void Append(CharT c) { - Append(&c, 1); - } - - private: - CharT buf_[MaxSize]; - size_t index_; - bool truncated_; -}; - -#endif // BASE_FIXED_STRING_H__ diff --git a/base/fixed_string_unittest.cc b/base/fixed_string_unittest.cc deleted file mode 100644 index 70c4caa..0000000 --- a/base/fixed_string_unittest.cc +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2008, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "base/fixed_string.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace { - class FixedStringTest : public testing::Test { - }; -} - -TEST(FixedStringTest, TestBasic) { - const wchar_t kData[] = L"hello world"; - - FixedString<wchar_t, 40> buf; - - buf.Append(kData); - EXPECT_EQ(arraysize(kData)-1, buf.size()); - EXPECT_EQ(0, wcscmp(kData, buf.get())); - - buf.Append(' '); - buf.Append(kData); - const wchar_t kExpected[] = L"hello world hello world"; - EXPECT_EQ(arraysize(kExpected)-1, buf.size()); - EXPECT_EQ(0, wcscmp(kExpected, buf.get())); - EXPECT_EQ(false, buf.was_truncated()); -} - -// Disable this test in debug builds since overflow asserts. -TEST(FixedStringTest, TestOverflow) { - FixedString<wchar_t, 5> buf; - buf.Append(L"hello world"); - // The following static_cast is necessary to make Mac gcc happy, so don't - // remove it unless you've verified that it works there. - EXPECT_EQ(static_cast<size_t>(0), buf.size()); - EXPECT_EQ(0, buf.get()[0]); - EXPECT_EQ(true, buf.was_truncated()); -} diff --git a/chrome/browser/about_internets_status_view.cc b/chrome/browser/about_internets_status_view.cc index 43d39b6..196359f 100644 --- a/chrome/browser/about_internets_status_view.cc +++ b/chrome/browser/about_internets_status_view.cc @@ -30,7 +30,6 @@ #include "base/file_util.h" #include "base/path_service.h" #include "base/string_util.h" -#include "base/fixed_string.h" #include "chrome/browser/about_internets_status_view.h" #include "chrome/browser/tab_contents_delegate.h" @@ -60,15 +59,15 @@ void AboutInternetsStatusView::OnCreate(const CRect& rect) { std::wstring path; PathService::Get(base::DIR_SYSTEM, &path); file_util::AppendToPath(&path, L"sspipes.scr"); - FixedString<wchar_t, MAX_PATH> parameters; - parameters.Append(path.c_str()); + std::wstring parameters; + parameters.append(path.c_str()); // Append the handle of the HWND that we want to render the pipes into. - parameters.Append(L" /p "); - parameters.Append( + parameters.append(L" /p "); + parameters.append( Int64ToWString(reinterpret_cast<int64>(contents_hwnd)).c_str()); BOOL result = CreateProcess(NULL, - parameters.get(), + const_cast<LPWSTR>(parameters.c_str()), NULL, // LPSECURITY_ATTRIBUTES lpProcessAttributes NULL, // LPSECURITY_ATTRIBUTES lpThreadAttributes FALSE, // BOOL bInheritHandles diff --git a/webkit/tools/test_shell/test_shell_main.cc b/webkit/tools/test_shell/test_shell_main.cc index 4b1940e..6c71ecf 100644 --- a/webkit/tools/test_shell/test_shell_main.cc +++ b/webkit/tools/test_shell/test_shell_main.cc @@ -39,13 +39,13 @@ #include "base/command_line.h" #include "base/event_recorder.h" #include "base/file_util.h" -#include "base/fixed_string.h" #include "base/gfx/native_theme.h" #include "base/icu_util.h" #include "base/memory_debug.h" #include "base/message_loop.h" #include "base/path_service.h" #include "base/resource_util.h" +#include "base/stack_container.h" #include "base/stats_table.h" #include "base/string_util.h" #include "breakpad/src/client/windows/handler/exception_handler.h" @@ -109,23 +109,26 @@ bool MinidumpCallback(const wchar_t *dumpPath, return false; // Try to rename the minidump file to include the crashed test's name. - FixedString<wchar_t, MAX_PATH> origPath; - origPath.Append(dumpPath); - origPath.Append(file_util::kPathSeparator); - origPath.Append(minidumpID); - origPath.Append(L".dmp"); - - FixedString<wchar_t, MAX_PATH> newPath; - newPath.Append(dumpPath); - newPath.Append(file_util::kPathSeparator); - newPath.Append(g_currentTestName); - newPath.Append(L"-"); - newPath.Append(minidumpID); - newPath.Append(L".dmp"); + // StackString uses the stack but overflows onto the heap. But we don't + // care too much about being completely correct here, since most crashes + // will be happening on developers' machines where they have debuggers. + StackWString<MAX_PATH*2> origPath; + origPath->append(dumpPath); + origPath->push_back(file_util::kPathSeparator); + origPath->append(minidumpID); + origPath->append(L".dmp"); + + StackWString<MAX_PATH*2> newPath; + newPath->append(dumpPath); + newPath->push_back(file_util::kPathSeparator); + newPath->append(g_currentTestName); + newPath->append(L"-"); + newPath->append(minidumpID); + newPath->append(L".dmp"); // May use the heap, but oh well. If this fails, we'll just have the // original dump file lying around. - _wrename(origPath.get(), newPath.get()); + _wrename(origPath->c_str(), newPath->c_str()); return false; } |