Ignore:
Timestamp:
May 5, 2011, 5:36:53 AM (14 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.7.2 sources from branches/vendor/nokia/qt.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/gui/painting/qdatabuffer_p.h

    r651 r846  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
     
    6161{
    6262public:
    63     QDataBuffer(int res = 64)
     63    QDataBuffer(int res)
    6464    {
    6565        capacity = res;
    66         buffer = (Type*) qMalloc(capacity * sizeof(Type));
     66        if (res)
     67            buffer = (Type*) qMalloc(capacity * sizeof(Type));
     68        else
     69            buffer = 0;
    6770        siz = 0;
    6871    }
     
    7073    ~QDataBuffer()
    7174    {
    72         qFree(buffer);
     75        if (buffer)
     76            qFree(buffer);
    7377    }
    7478
     
    8286    inline Type &at(int i) { Q_ASSERT(i >= 0 && i < siz); return buffer[i]; }
    8387    inline const Type &at(int i) const { Q_ASSERT(i >= 0 && i < siz); return buffer[i]; }
     88    inline Type &last() { Q_ASSERT(!isEmpty()); return buffer[siz-1]; }
    8489    inline const Type &last() const { Q_ASSERT(!isEmpty()); return buffer[siz-1]; }
     90    inline Type &first() { Q_ASSERT(!isEmpty()); return buffer[0]; }
    8591    inline const Type &first() const { Q_ASSERT(!isEmpty()); return buffer[0]; }
    8692
     
    8995        buffer[siz] = t;
    9096        ++siz;
     97    }
     98
     99    inline void pop_back() {
     100        Q_ASSERT(siz > 0);
     101        --siz;
    91102    }
    92103
     
    98109    inline void reserve(int size) {
    99110        if (size > capacity) {
     111            if (capacity == 0)
     112                capacity = 1;
    100113            while (capacity < size)
    101114                capacity *= 2;
     
    106119    inline void shrink(int size) {
    107120        capacity = size;
    108         buffer = (Type*) qRealloc(buffer, capacity * sizeof(Type));
     121        if (size)
     122            buffer = (Type*) qRealloc(buffer, capacity * sizeof(Type));
     123        else {
     124            qFree(buffer);
     125            buffer = 0;
     126        }
    109127    }
    110128
Note: See TracChangeset for help on using the changeset viewer.