diff --git a/ChangeLog b/ChangeLog index b67aaea5..2d770347 100644 --- a/ChangeLog +++ b/ChangeLog @@ -25061,3 +25061,7 @@ 2025-10-13 Fred Gleason * Incremented the package version to 4.4.1. * Incremented the Python API version to 4.4.1. +2025-10-23 Fred Gleason + * Fixed a bug in 'RDCart::updateLength()' that could cause patently + ridiculous values to be calculated for the 'Start' and 'End' + date-time columns in the cart library. diff --git a/lib/rdescape_string.cpp b/lib/rdescape_string.cpp index 613d2a3a..c431c6af 100644 --- a/lib/rdescape_string.cpp +++ b/lib/rdescape_string.cpp @@ -49,12 +49,17 @@ QString RDCheckDateTime(QTime const &time, QString const &format) QString RDCheckDateTime(QDateTime const &datetime, QString const &format) { QString checkedValue = "NULL"; + + if((datetime==RDCheckDateTime_InvalidStart)|| + (datetime==RDCheckDateTime_InvalidEnd)) { + return checkedValue; + } - if(datetime.isValid()) + if(datetime.isValid()) { checkedValue = "\"" + datetime.toString(format) + "\""; - + } + return checkedValue; - } /** diff --git a/lib/rdescape_string.h b/lib/rdescape_string.h index a9b803d9..f3cf39af 100644 --- a/lib/rdescape_string.h +++ b/lib/rdescape_string.h @@ -25,6 +25,16 @@ #include #include +/* + * These are used in conjunction with the code in RDCart::updateLength() + * to calculate the outer limits of a disjunctive set of QDateTime values. + * + * If either of these values are found by RDCheckDateTime(), they will be + * returned as a NULL value (meaning, "no limits were found"). + */ +#define RDCheckDateTime_InvalidStart QDateTime(QDate(3000,1,1),QTime(0,0,0)) +#define RDCheckDateTime_InvalidEnd QDateTime(QDate(1000,1,1),QTime(0,0,0)) + QString RDCheckDateTime(const QTime &time, const QString &format); QString RDCheckDateTime(const QDateTime &datetime, const QString &format); QString RDCheckDateTime(const QDate &date, const QString &format);