quick
quick copied to clipboard
QuickQB.update - invalid argument type assumption leading to expression exception
quick 7.3.1
quick/models/QuickQb.cfc
Hit a case where Quick tries to treat a string as a struct, e.g. in the following, if values
is something like {someColumn: "someValue"}
public any function update(
struct values = {},
struct options = {},
boolean toSql = false
) {
for ( var key in arguments.values ) {
if ( structKeyExists( arguments.values[ key ], "isQuickBuilder" ) ) {
arguments.values[ key ] = arguments.values[ key ].getQb();
}
The structKeyExists becomes structKeyExists( "someValue", "isQuickBuilder" )
which fails with "cannot convert string to struct".
Our current workaround is:
diff --git a/modules/quick/models/QuickQB.cfc b/modules/quick/models/QuickQB.cfc
index 457378a20..2567f341d 100755
--- a/modules/quick/models/QuickQB.cfc
+++ b/modules/quick/models/QuickQB.cfc
@@ -305,6 +305,9 @@ component
boolean toSql = false
) {
for ( var key in arguments.values ) {
+ if ( isNull( arguments.values[ key ] ) || isSimpleValue( arguments.values[ key ] ) ) {
+ continue;
+ }
if ( structKeyExists( arguments.values[ key ], "isQuickBuilder" ) ) {
arguments.values[ key ] = arguments.values[ key ].getQb();
}