Don't cast negative values to unsigned.  This eliminates warnings in GCC.

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@799 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/base/pickle.cc b/base/pickle.cc
index 356d5df1..3c3c7e2 100644
--- a/base/pickle.cc
+++ b/base/pickle.cc
@@ -39,6 +39,9 @@
 // static
 const int Pickle::kPayloadUnit = 64;
 
+// We mark a read only pickle with a special capacity_.
+static const size_t kCapacityReadOnly = std::numeric_limits<size_t>::max();
+
 // Payload is uint32 aligned.
 
 Pickle::Pickle()
@@ -64,7 +67,7 @@
 Pickle::Pickle(const char* data, int data_len)
     : header_(reinterpret_cast<Header*>(const_cast<char*>(data))),
       header_size_(data_len - header_->payload_size),
-      capacity_(-1),
+      capacity_(kCapacityReadOnly),
       variable_buffer_offset_(0) {
   DCHECK(header_size_ >= sizeof(Header));
   DCHECK(header_size_ == AlignInt(header_size_, sizeof(uint32)));
@@ -82,12 +85,12 @@
 }
 
 Pickle::~Pickle() {
-  if (capacity_ != -1)
+  if (capacity_ != kCapacityReadOnly)
     free(header_);
 }
 
 Pickle& Pickle::operator=(const Pickle& other) {
-  if (header_size_ != other.header_size_ && capacity_ != -1) {
+  if (header_size_ != other.header_size_ && capacity_ != kCapacityReadOnly) {
     free(header_);
     header_ = NULL;
     header_size_ = other.header_size_;
@@ -258,7 +261,7 @@
 }
 
 bool Pickle::WriteBytes(const void* data, int data_len) {
-  DCHECK(capacity_ != -1) << "oops: pickle is readonly";
+  DCHECK(capacity_ != kCapacityReadOnly) << "oops: pickle is readonly";
 
   char* dest = BeginWrite(data_len);
   if (!dest)
diff --git a/base/values_unittest.cc b/base/values_unittest.cc
index 40422bb7..2080d07 100644
--- a/base/values_unittest.cc
+++ b/base/values_unittest.cc
@@ -27,6 +27,8 @@
 // (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 <limits>
+
 #include "base/values.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -174,7 +176,8 @@
     list.Append(new DeletionTestValue(&deletion_flag));
     EXPECT_FALSE(deletion_flag);
     EXPECT_EQ(1, list.GetSize());
-    EXPECT_FALSE(list.Remove(-1, &removed_item));
+    EXPECT_FALSE(list.Remove(std::numeric_limits<size_t>::max(),
+                             &removed_item));
     EXPECT_FALSE(list.Remove(1, &removed_item));
     EXPECT_TRUE(list.Remove(0, &removed_item));
     ASSERT_TRUE(removed_item);