[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

gramps gramps at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 05:49:51 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 1f9509102d7d9b38a640bdbd9338137873ec397f
Author: gramps <gramps at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Sat Oct 6 01:11:55 2001 +0000

    Fun with numerics
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@297 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/kwq/KWQString.h b/WebCore/kwq/KWQString.h
index e159b14..527190c 100644
--- a/WebCore/kwq/KWQString.h
+++ b/WebCore/kwq/KWQString.h
@@ -156,6 +156,11 @@ public:
     // static member functions -------------------------------------------------
 
     static QString number(int /* NOTE: base NOT used */ );
+    static QString number(uint /* NOTE: base NOT used */ );
+    static QString number(long /* NOTE: base NOT used */ );
+    static QString number(ulong /* NOTE: base NOT used */ );
+    static QString number(double);
+
     static QString fromLatin1(const char * /* NOTE: len NOT used */ );
 #ifdef USING_BORROWED_KURL
     static QString fromLocal8Bit(const char *, int len=-1);
@@ -223,7 +228,13 @@ public:
     float toFloat(bool *ok=NULL) const;
 
     QString arg(const QString &, int width=0) const;
+    QString arg(short, int width=0 /* NOTE: base NOT used */ ) const;
+    QString arg(ushort, int width=0 /* NOTE: base NOT used */ ) const;
     QString arg(int, int width=0 /* NOTE: base NOT used */ ) const;
+    QString arg(uint, int width=0 /* NOTE: base NOT used */ ) const;
+    QString arg(long, int width=0 /* NOTE: base NOT used */ ) const;
+    QString arg(ulong, int width=0 /* NOTE: base NOT used */ ) const;
+    QString arg(double, int width=0) const;
 
     QString left(uint) const;
     QString right(uint) const;
@@ -238,7 +249,16 @@ public:
     QString simplifyWhiteSpace() const;
 
     QString &setUnicode(const QChar *, uint);
+    QString &setLatin1(const char *);
+
+    QString &setNum(short /* NOTE: base NOT used */ );
+    QString &setNum(ushort /* NOTE: base NOT used */ );
     QString &setNum(int /* NOTE: base NOT used */ );
+    QString &setNum(uint /* NOTE: base NOT used */ );
+    QString &setNum(long /* NOTE: base NOT used */ );
+    QString &setNum(ulong /* NOTE: base NOT used */ );
+    QString &setNum(double);
+
     QString &sprintf(const char *, ...);
 
     QString &prepend(const QString &);
diff --git a/WebCore/kwq/KWQString.mm b/WebCore/kwq/KWQString.mm
index a7f2123..3a86ea5 100644
--- a/WebCore/kwq/KWQString.mm
+++ b/WebCore/kwq/KWQString.mm
@@ -47,6 +47,34 @@ QString QString::number(int n)
     return qs;
 }
 
+QString QString::number(uint n)
+{
+    QString qs;
+    qs.setNum(n);
+    return qs;
+}
+
+QString QString::number(long n)
+{
+    QString qs;
+    qs.setNum(n);
+    return qs;
+}
+
+QString QString::number(ulong n)
+{
+    QString qs;
+    qs.setNum(n);
+    return qs;
+}
+
+QString QString::number(double n)
+{
+    QString qs;
+    qs.setNum(n);
+    return qs;
+}
+
 QString QString::fromLatin1(const char *chs)
 {
     return QString(chs);
@@ -571,7 +599,11 @@ uint QString::toUInt(bool *ok) const
             while (i < len) {
                 uc = CFStringGetCharacterFromInlineBuffer(&buf, i);
                 if ((uc >= '0') && (uc <= '9')) {
-                    n += uc - '0';
+                    if (n > (UINT_MAX / 10)) {
+                        valid = FALSE;
+                        break;
+                    }
+                    n = (n * 10) + (uc - '0');
                 } else {
                     break;
                 }
@@ -634,12 +666,24 @@ long QString::toLong(bool *ok, int base) const
                 uc = CFStringGetCharacterFromInlineBuffer(&buf, i);
                 // NOTE: ignore anything other than base 10 and base 16
                 if ((uc >= '0') && (uc <= '9')) {
-                    n += uc - '0';
+                    if (n > (INT_MAX / 10)) {
+                        valid = FALSE;
+                        break;
+                    }
+                    n = (n * 10) + (uc - '0');
                 } else if (base == 16) {
                     if ((uc >= 'A') && (uc <= 'F')) {
-                        n += 10 + (uc - 'A');
+                        if (n > (INT_MAX / 16)) {
+                            valid = FALSE;
+                            break;
+                        }
+                        n = (n * 16) + (10 + (uc - 'A'));
                     } else if ((uc >= 'a') && (uc <= 'f')) {
-                        n += 10 + (uc - 'a');
+                        if (n > (INT_MAX / 16)) {
+                            valid = FALSE;
+                            break;
+                        }
+                        n = (n * 16) + (10 + (uc - 'a'));
                     } else {
                         break;
                     }
@@ -753,11 +797,41 @@ QString QString::arg(const QString &replacement, int width) const
     return qs;
 }
 
+QString QString::arg(short replacement, int width) const
+{
+    return arg(number((int)replacement), width);
+}
+
+QString QString::arg(ushort replacement, int width) const
+{
+    return arg(number((uint)replacement), width);
+}
+
 QString QString::arg(int replacement, int width) const
 {
     return arg(number(replacement), width);
 }
 
+QString QString::arg(uint replacement, int width) const
+{
+    return arg(number(replacement), width);
+}
+
+QString QString::arg(long replacement, int width) const
+{
+    return arg(number(replacement), width);
+}
+
+QString QString::arg(ulong replacement, int width) const
+{
+    return arg(number(replacement), width);
+}
+
+QString QString::arg(double replacement, int width) const
+{
+    return arg(number(replacement), width);
+}
+
 QString QString::left(uint width) const
 {
     return leftRight(width, TRUE);
@@ -901,49 +975,102 @@ QString QString::simplifyWhiteSpace() const
 QString &QString::setUnicode(const QChar *qcs, uint len)
 {
     flushCache();
-    if (!s && len) {
-        s = CFStringCreateMutable(kCFAllocatorDefault, 0);
-    }
-    if (s) {
-        if (len) {
-            if (qcs) {
-                CFStringRef tmp = CFStringCreateWithCharactersNoCopy(
-                        kCFAllocatorDefault, &qcs->c, len, kCFAllocatorNull);
-                if (tmp) {
-                    CFStringReplaceAll(s, tmp);
-                    CFRelease(tmp);
-                }
+    if (qcs && len) {
+        if (s) {
+            CFStringRef tmp = CFStringCreateWithCharactersNoCopy(
+                    kCFAllocatorDefault, &qcs->c, len, kCFAllocatorNull);
+            if (tmp) {
+                CFStringReplaceAll(s, tmp);
+                CFRelease(tmp);
             }
         } else {
-            CFRelease(s);
-            s = NULL;
+            s = CFStringCreateMutable(kCFAllocatorDefault, 0);
+            if (s) {
+                CFStringAppendCharacters(s, &qcs->c, len);
+            }
         }
+    } else if (s) {
+        CFRelease(s);
+        s = NULL;
     }
     return *this;
 }
 
-QString &QString::setNum(int n)
+QString &QString::setLatin1(const char *chs)
 {
     flushCache();
-    if (!s) {
-        s = CFStringCreateMutable(kCFAllocatorDefault, 0);
-    }
-    if (s) {
-        const int capacity = 64;
-        char buf[capacity];
-        buf[snprintf(buf, capacity - 1, "%d", n)] = '\0';
-        // FIXME: is ISO Latin-1 the correct encoding?
-        CFStringRef tmp = CFStringCreateWithCStringNoCopy(
-                kCFAllocatorDefault, buf, kCFStringEncodingISOLatin1,
-                kCFAllocatorNull);
-        if (tmp) {
-            CFStringReplaceAll(s, tmp);
-            CFRelease(tmp);
+    if (chs && *chs) {
+        if (s) {
+            CFStringRef tmp = CFStringCreateWithCStringNoCopy(
+                    kCFAllocatorDefault, chs, kCFStringEncodingISOLatin1,
+                    kCFAllocatorNull);
+            if (tmp) {
+                CFStringReplaceAll(s, tmp);
+                CFRelease(tmp);
+            }
+        } else {
+            s = CFStringCreateMutable(kCFAllocatorDefault, 0);
+            if (s) {
+                CFStringAppendCString(s, chs, kCFStringEncodingISOLatin1);
+            }
         }
+    } else if (s) {
+        CFRelease(s);
+        s = NULL;
     }
     return *this;
 }
 
+QString &QString::setNum(short n)
+{
+    return setNum((long)n);
+}
+
+QString &QString::setNum(ushort n)
+{
+    return setNum((ulong)n);
+}
+
+QString &QString::setNum(int n)
+{
+    const int capacity = 64;
+    char buf[capacity];
+    buf[snprintf(buf, capacity - 1, "%d", n)] = '\0';
+    return setLatin1(buf);
+}
+
+QString &QString::setNum(uint n)
+{
+    const int capacity = 64;
+    char buf[capacity];
+    buf[snprintf(buf, capacity - 1, "%u", n)] = '\0';
+    return setLatin1(buf);
+}
+
+QString &QString::setNum(long n)
+{
+    const int capacity = 64;
+    char buf[capacity];
+    buf[snprintf(buf, capacity - 1, "%D", n)] = '\0';
+    return setLatin1(buf);
+}
+
+QString &QString::setNum(ulong n)
+{
+    const int capacity = 64;
+    char buf[capacity];
+    buf[snprintf(buf, capacity - 1, "%U", n)] = '\0';
+    return setLatin1(buf);
+}
+
+QString &QString::setNum(double n)
+{
+    const int capacity = 64;
+    char buf[capacity];
+    buf[snprintf(buf, capacity - 1, "%.6lg", n)] = '\0';
+    return setLatin1(buf);
+}
+
 QString &QString::sprintf(const char *format, ...)
 {
     va_list args;
diff --git a/WebCore/kwq/qt/qstring.h b/WebCore/kwq/qt/qstring.h
index e159b14..527190c 100644
--- a/WebCore/kwq/qt/qstring.h
+++ b/WebCore/kwq/qt/qstring.h
@@ -156,6 +156,11 @@ public:
     // static member functions -------------------------------------------------
 
     static QString number(int /* NOTE: base NOT used */ );
+    static QString number(uint /* NOTE: base NOT used */ );
+    static QString number(long /* NOTE: base NOT used */ );
+    static QString number(ulong /* NOTE: base NOT used */ );
+    static QString number(double);
+
     static QString fromLatin1(const char * /* NOTE: len NOT used */ );
 #ifdef USING_BORROWED_KURL
     static QString fromLocal8Bit(const char *, int len=-1);
@@ -223,7 +228,13 @@ public:
     float toFloat(bool *ok=NULL) const;
 
     QString arg(const QString &, int width=0) const;
+    QString arg(short, int width=0 /* NOTE: base NOT used */ ) const;
+    QString arg(ushort, int width=0 /* NOTE: base NOT used */ ) const;
     QString arg(int, int width=0 /* NOTE: base NOT used */ ) const;
+    QString arg(uint, int width=0 /* NOTE: base NOT used */ ) const;
+    QString arg(long, int width=0 /* NOTE: base NOT used */ ) const;
+    QString arg(ulong, int width=0 /* NOTE: base NOT used */ ) const;
+    QString arg(double, int width=0) const;
 
     QString left(uint) const;
     QString right(uint) const;
@@ -238,7 +249,16 @@ public:
     QString simplifyWhiteSpace() const;
 
     QString &setUnicode(const QChar *, uint);
+    QString &setLatin1(const char *);
+
+    QString &setNum(short /* NOTE: base NOT used */ );
+    QString &setNum(ushort /* NOTE: base NOT used */ );
     QString &setNum(int /* NOTE: base NOT used */ );
+    QString &setNum(uint /* NOTE: base NOT used */ );
+    QString &setNum(long /* NOTE: base NOT used */ );
+    QString &setNum(ulong /* NOTE: base NOT used */ );
+    QString &setNum(double);
+
     QString &sprintf(const char *, ...);
 
     QString &prepend(const QString &);
diff --git a/WebCore/src/kwq/KWQString.mm b/WebCore/src/kwq/KWQString.mm
index a7f2123..3a86ea5 100644
--- a/WebCore/src/kwq/KWQString.mm
+++ b/WebCore/src/kwq/KWQString.mm
@@ -47,6 +47,34 @@ QString QString::number(int n)
     return qs;
 }
 
+QString QString::number(uint n)
+{
+    QString qs;
+    qs.setNum(n);
+    return qs;
+}
+
+QString QString::number(long n)
+{
+    QString qs;
+    qs.setNum(n);
+    return qs;
+}
+
+QString QString::number(ulong n)
+{
+    QString qs;
+    qs.setNum(n);
+    return qs;
+}
+
+QString QString::number(double n)
+{
+    QString qs;
+    qs.setNum(n);
+    return qs;
+}
+
 QString QString::fromLatin1(const char *chs)
 {
     return QString(chs);
@@ -571,7 +599,11 @@ uint QString::toUInt(bool *ok) const
             while (i < len) {
                 uc = CFStringGetCharacterFromInlineBuffer(&buf, i);
                 if ((uc >= '0') && (uc <= '9')) {
-                    n += uc - '0';
+                    if (n > (UINT_MAX / 10)) {
+                        valid = FALSE;
+                        break;
+                    }
+                    n = (n * 10) + (uc - '0');
                 } else {
                     break;
                 }
@@ -634,12 +666,24 @@ long QString::toLong(bool *ok, int base) const
                 uc = CFStringGetCharacterFromInlineBuffer(&buf, i);
                 // NOTE: ignore anything other than base 10 and base 16
                 if ((uc >= '0') && (uc <= '9')) {
-                    n += uc - '0';
+                    if (n > (INT_MAX / 10)) {
+                        valid = FALSE;
+                        break;
+                    }
+                    n = (n * 10) + (uc - '0');
                 } else if (base == 16) {
                     if ((uc >= 'A') && (uc <= 'F')) {
-                        n += 10 + (uc - 'A');
+                        if (n > (INT_MAX / 16)) {
+                            valid = FALSE;
+                            break;
+                        }
+                        n = (n * 16) + (10 + (uc - 'A'));
                     } else if ((uc >= 'a') && (uc <= 'f')) {
-                        n += 10 + (uc - 'a');
+                        if (n > (INT_MAX / 16)) {
+                            valid = FALSE;
+                            break;
+                        }
+                        n = (n * 16) + (10 + (uc - 'a'));
                     } else {
                         break;
                     }
@@ -753,11 +797,41 @@ QString QString::arg(const QString &replacement, int width) const
     return qs;
 }
 
+QString QString::arg(short replacement, int width) const
+{
+    return arg(number((int)replacement), width);
+}
+
+QString QString::arg(ushort replacement, int width) const
+{
+    return arg(number((uint)replacement), width);
+}
+
 QString QString::arg(int replacement, int width) const
 {
     return arg(number(replacement), width);
 }
 
+QString QString::arg(uint replacement, int width) const
+{
+    return arg(number(replacement), width);
+}
+
+QString QString::arg(long replacement, int width) const
+{
+    return arg(number(replacement), width);
+}
+
+QString QString::arg(ulong replacement, int width) const
+{
+    return arg(number(replacement), width);
+}
+
+QString QString::arg(double replacement, int width) const
+{
+    return arg(number(replacement), width);
+}
+
 QString QString::left(uint width) const
 {
     return leftRight(width, TRUE);
@@ -901,49 +975,102 @@ QString QString::simplifyWhiteSpace() const
 QString &QString::setUnicode(const QChar *qcs, uint len)
 {
     flushCache();
-    if (!s && len) {
-        s = CFStringCreateMutable(kCFAllocatorDefault, 0);
-    }
-    if (s) {
-        if (len) {
-            if (qcs) {
-                CFStringRef tmp = CFStringCreateWithCharactersNoCopy(
-                        kCFAllocatorDefault, &qcs->c, len, kCFAllocatorNull);
-                if (tmp) {
-                    CFStringReplaceAll(s, tmp);
-                    CFRelease(tmp);
-                }
+    if (qcs && len) {
+        if (s) {
+            CFStringRef tmp = CFStringCreateWithCharactersNoCopy(
+                    kCFAllocatorDefault, &qcs->c, len, kCFAllocatorNull);
+            if (tmp) {
+                CFStringReplaceAll(s, tmp);
+                CFRelease(tmp);
             }
         } else {
-            CFRelease(s);
-            s = NULL;
+            s = CFStringCreateMutable(kCFAllocatorDefault, 0);
+            if (s) {
+                CFStringAppendCharacters(s, &qcs->c, len);
+            }
         }
+    } else if (s) {
+        CFRelease(s);
+        s = NULL;
     }
     return *this;
 }
 
-QString &QString::setNum(int n)
+QString &QString::setLatin1(const char *chs)
 {
     flushCache();
-    if (!s) {
-        s = CFStringCreateMutable(kCFAllocatorDefault, 0);
-    }
-    if (s) {
-        const int capacity = 64;
-        char buf[capacity];
-        buf[snprintf(buf, capacity - 1, "%d", n)] = '\0';
-        // FIXME: is ISO Latin-1 the correct encoding?
-        CFStringRef tmp = CFStringCreateWithCStringNoCopy(
-                kCFAllocatorDefault, buf, kCFStringEncodingISOLatin1,
-                kCFAllocatorNull);
-        if (tmp) {
-            CFStringReplaceAll(s, tmp);
-            CFRelease(tmp);
+    if (chs && *chs) {
+        if (s) {
+            CFStringRef tmp = CFStringCreateWithCStringNoCopy(
+                    kCFAllocatorDefault, chs, kCFStringEncodingISOLatin1,
+                    kCFAllocatorNull);
+            if (tmp) {
+                CFStringReplaceAll(s, tmp);
+                CFRelease(tmp);
+            }
+        } else {
+            s = CFStringCreateMutable(kCFAllocatorDefault, 0);
+            if (s) {
+                CFStringAppendCString(s, chs, kCFStringEncodingISOLatin1);
+            }
         }
+    } else if (s) {
+        CFRelease(s);
+        s = NULL;
     }
     return *this;
 }
 
+QString &QString::setNum(short n)
+{
+    return setNum((long)n);
+}
+
+QString &QString::setNum(ushort n)
+{
+    return setNum((ulong)n);
+}
+
+QString &QString::setNum(int n)
+{
+    const int capacity = 64;
+    char buf[capacity];
+    buf[snprintf(buf, capacity - 1, "%d", n)] = '\0';
+    return setLatin1(buf);
+}
+
+QString &QString::setNum(uint n)
+{
+    const int capacity = 64;
+    char buf[capacity];
+    buf[snprintf(buf, capacity - 1, "%u", n)] = '\0';
+    return setLatin1(buf);
+}
+
+QString &QString::setNum(long n)
+{
+    const int capacity = 64;
+    char buf[capacity];
+    buf[snprintf(buf, capacity - 1, "%D", n)] = '\0';
+    return setLatin1(buf);
+}
+
+QString &QString::setNum(ulong n)
+{
+    const int capacity = 64;
+    char buf[capacity];
+    buf[snprintf(buf, capacity - 1, "%U", n)] = '\0';
+    return setLatin1(buf);
+}
+
+QString &QString::setNum(double n)
+{
+    const int capacity = 64;
+    char buf[capacity];
+    buf[snprintf(buf, capacity - 1, "%.6lg", n)] = '\0';
+    return setLatin1(buf);
+}
+
 QString &QString::sprintf(const char *format, ...)
 {
     va_list args;
diff --git a/WebCore/src/kwq/qt/qstring.h b/WebCore/src/kwq/qt/qstring.h
index e159b14..527190c 100644
--- a/WebCore/src/kwq/qt/qstring.h
+++ b/WebCore/src/kwq/qt/qstring.h
@@ -156,6 +156,11 @@ public:
     // static member functions -------------------------------------------------
 
     static QString number(int /* NOTE: base NOT used */ );
+    static QString number(uint /* NOTE: base NOT used */ );
+    static QString number(long /* NOTE: base NOT used */ );
+    static QString number(ulong /* NOTE: base NOT used */ );
+    static QString number(double);
+
     static QString fromLatin1(const char * /* NOTE: len NOT used */ );
 #ifdef USING_BORROWED_KURL
     static QString fromLocal8Bit(const char *, int len=-1);
@@ -223,7 +228,13 @@ public:
     float toFloat(bool *ok=NULL) const;
 
     QString arg(const QString &, int width=0) const;
+    QString arg(short, int width=0 /* NOTE: base NOT used */ ) const;
+    QString arg(ushort, int width=0 /* NOTE: base NOT used */ ) const;
     QString arg(int, int width=0 /* NOTE: base NOT used */ ) const;
+    QString arg(uint, int width=0 /* NOTE: base NOT used */ ) const;
+    QString arg(long, int width=0 /* NOTE: base NOT used */ ) const;
+    QString arg(ulong, int width=0 /* NOTE: base NOT used */ ) const;
+    QString arg(double, int width=0) const;
 
     QString left(uint) const;
     QString right(uint) const;
@@ -238,7 +249,16 @@ public:
     QString simplifyWhiteSpace() const;
 
     QString &setUnicode(const QChar *, uint);
+    QString &setLatin1(const char *);
+
+    QString &setNum(short /* NOTE: base NOT used */ );
+    QString &setNum(ushort /* NOTE: base NOT used */ );
     QString &setNum(int /* NOTE: base NOT used */ );
+    QString &setNum(uint /* NOTE: base NOT used */ );
+    QString &setNum(long /* NOTE: base NOT used */ );
+    QString &setNum(ulong /* NOTE: base NOT used */ );
+    QString &setNum(double);
+
     QString &sprintf(const char *, ...);
 
     QString &prepend(const QString &);

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list