Ignore:
Timestamp:
Feb 11, 2010, 11:19:06 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.6.1 sources.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/testlib/qabstracttestlogger.cpp

    r2 r561  
    22**
    33** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    4 ** Contact: Qt Software Information (qt-info@nokia.com)
     4** All rights reserved.
     5** Contact: Nokia Corporation (qt-info@nokia.com)
    56**
    67** This file is part of the QtTest module of the Qt Toolkit.
     
    2122** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    2223**
    23 ** In addition, as a special exception, Nokia gives you certain
    24 ** additional rights. These rights are described in the Nokia Qt LGPL
    25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
    26 ** package.
     24** In addition, as a special exception, Nokia gives you certain additional
     25** rights.  These rights are described in the Nokia Qt LGPL Exception
     26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    2727**
    2828** GNU General Public License Usage
     
    3434** met: http://www.gnu.org/copyleft/gpl.html.
    3535**
    36 ** If you are unsure which license is appropriate for your use, please
    37 ** contact the sales department at qt-sales@nokia.com.
     36** If you have questions regarding the use of this file, please contact
     37** Nokia at qt-info@nokia.com.
    3838** $QT_END_LICENSE$
    3939**
     
    4444#include "QtTest/qtestassert.h"
    4545
     46#include "QtCore/qbytearray.h"
     47
    4648#include <stdio.h>
    4749#include <stdlib.h>
     50#include <stdarg.h>
    4851
    4952#ifndef Q_OS_WIN
     
    7881}
    7982
     83
    8084void QAbstractTestLogger::startLogging()
    8185{
     
    106110}
    107111
     112namespace QTest
     113{
     114
     115extern void filter_unprintable(char *str);
     116
     117/*!
     118    \fn int QTest::qt_asprintf(QTestCharBuffer *buf, const char *format, ...);
     119    \internal
     120 */
     121int qt_asprintf(QTestCharBuffer *str, const char *format, ...)
     122{
     123    static const int MAXSIZE = 1024*1024*2;
     124
     125    Q_ASSERT(str);
     126
     127    int size = str->size();
     128
     129    va_list ap;
     130    int res = 0;
     131
     132    for (;;) {
     133        va_start(ap, format);
     134        res = qvsnprintf(str->data(), size, format, ap);
     135        va_end(ap);
     136        str->data()[size - 1] = '\0';
     137        if (res >= 0 && res < size) {
     138            // We succeeded
     139            break;
     140        }
     141        // buffer wasn't big enough, try again.
     142        // Note, we're assuming that a result of -1 is always due to running out of space.
     143        size *= 2;
     144        if (size > MAXSIZE) {
     145            break;
     146        }
     147        if (!str->reset(size))
     148            break; // out of memory - take what we have
     149    }
     150
     151    filter_unprintable(str->data());
     152
     153    return res;
     154}
     155
     156}
     157
    108158QT_END_NAMESPACE
Note: See TracChangeset for help on using the changeset viewer.