File tree 5 files changed +30
-13
lines changed
5 files changed +30
-13
lines changed Original file line number Diff line number Diff line change @@ -118,9 +118,12 @@ void HttpFileUpload::start()
118
118
}
119
119
if (ver != XEP0363::vUnknown) {
120
120
QVector<std::pair<HttpHost, int >> hosts;
121
- const XData::Field field = item.registeredExtension (xmlns).getField (QLatin1String (" max-file-size" ));
122
- if (field.isValid () && field.type () == XData::Field::Field_TextSingle)
123
- sizeLimit = field.value ().at (0 ).toULongLong ();
121
+ auto optField = item.registeredExtension (xmlns).findField (QLatin1String (" max-file-size" ));
122
+ if (optField) {
123
+ const XData::Field &field = *optField;
124
+ if (field.isValid () && field.type () == XData::Field::Field_TextSingle)
125
+ sizeLimit = field.value ().value (0 ).toULongLong ();
126
+ }
124
127
HttpHost host;
125
128
host.ver = ver;
126
129
host.jid = item.jid ();
Original file line number Diff line number Diff line change @@ -2902,20 +2902,22 @@ CaptchaChallenge::CaptchaChallenge(const Message &m) : d(new CaptchaChallengePri
2902
2902
d->dt = QDateTime::currentDateTime ();
2903
2903
}
2904
2904
2905
- if (m.getForm ().registrarType () != " urn:xmpp:captcha" || m.getForm ().type () != XData::Data_Form)
2905
+ if (m.getForm ().registrarType () != QLatin1String (" urn:xmpp:captcha" ) || m.getForm ().type () != XData::Data_Form
2906
+ || m.id ().isEmpty ())
2906
2907
return ;
2907
2908
2908
- if (m.id ().isEmpty () || m.getForm ().getField (" challenge" ).value ().value (0 ) != m.id ())
2909
+ auto fieldOpt = m.getForm ().findField (" challenge" );
2910
+ if (!fieldOpt || fieldOpt->value ().value (0 ) != m.id ())
2909
2911
return ;
2910
2912
2911
- if (m.getForm ().getField (" from" ). value ().value (0 ).isEmpty ())
2913
+ if (fieldOpt = m.getForm ().findField (" from" ); !fieldOpt || fieldOpt-> value ().value (0 ).isEmpty ())
2912
2914
return ;
2913
2915
2914
2916
d->form = m.getForm ();
2915
2917
d->explanation = m.body ();
2916
2918
d->urls = m.urlList ();
2917
2919
d->arbiter = m.from ();
2918
- d->offendedJid = Jid (m. getForm (). getField ( " from " ). value ().value (0 ));
2920
+ d->offendedJid = Jid (fieldOpt-> value ().value (0 ));
2919
2921
}
2920
2922
2921
2923
CaptchaChallenge::~CaptchaChallenge () { }
Original file line number Diff line number Diff line change @@ -1493,7 +1493,8 @@ void VCard::setPhoto(const PAdvUris &photo)
1493
1493
Item<UriValue> &VCard::setPhoto (const UriValue &photo)
1494
1494
{
1495
1495
INIT_D ();
1496
- d->photo .append ({ Parameters (), photo });
1496
+ PAdvUris l = { { PAdvUri { Parameters (), photo } } };
1497
+ d->photo = std::move (l);
1497
1498
return d->photo .last ();
1498
1499
}
1499
1500
Original file line number Diff line number Diff line change @@ -338,7 +338,7 @@ void XData::setRegistrarType(const QString ®istrarType) { d->registrarType =
338
338
339
339
const XData::FieldList &XData::fields () const { return d->fields ; }
340
340
341
- XData::Field XData::getField (const QString &var) const
341
+ std::optional<XMPP:: XData::Field> XMPP:: XData::findField (const QString &var) const
342
342
{
343
343
if (!d->fields .isEmpty ()) {
344
344
FieldList::ConstIterator it = d->fields .begin ();
@@ -348,7 +348,13 @@ XData::Field XData::getField(const QString &var) const
348
348
return f;
349
349
}
350
350
}
351
- return Field ();
351
+ return {};
352
+ }
353
+
354
+ XData::Field XData::getField (const QString &var) const
355
+ {
356
+ auto of = findField (var);
357
+ return of ? *of : XData::Field {};
352
358
}
353
359
354
360
XData::Field &XData::fieldRef (const QString &var)
Original file line number Diff line number Diff line change 28
28
#include < QString>
29
29
#include < QStringList>
30
30
31
+ #include < optional>
32
+
31
33
class QDomDocument ;
32
34
class QDomElement ;
33
35
@@ -152,9 +154,12 @@ class XData {
152
154
typedef QList<Field> FieldList;
153
155
154
156
const FieldList &fields () const ;
155
- Field getField (const QString &var) const ;
156
- Field &fieldRef (const QString &var);
157
- void setFields (const FieldList &fl);
157
+
158
+ std::optional<Field> findField (const QString &var) const ;
159
+ Field getField (const QString &var) const ;
160
+ Field &fieldRef (const QString &var); // dangerous
161
+
162
+ void setFields (const FieldList &fl);
158
163
159
164
private:
160
165
class Private : public QSharedData {
You can’t perform that action at this time.
0 commit comments