Skip to content

Commit 897300c

Browse files
amabluea-maurice
authored andcommitted
Corrected the behavior of various functions when passed null. Instead of
asserting (c++) or throwing exceptions (c#), they log a warning and return an invalid value, which matches the behavior we have on mobile platforms. The tests and testapps have been updated to reflect this. PiperOrigin-RevId: 276144627
1 parent 32becdc commit 897300c

File tree

5 files changed

+25
-31
lines changed

5 files changed

+25
-31
lines changed

database/src/common/data_snapshot.cc

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,8 @@ DataSnapshot::~DataSnapshot() {
9898
bool DataSnapshot::exists() const { return internal_ && internal_->Exists(); }
9999

100100
DataSnapshot DataSnapshot::Child(const char* path) const {
101-
FIREBASE_ASSERT_RETURN(DataSnapshot(), path != nullptr);
102-
return internal_ ? DataSnapshot(internal_->Child(path))
103-
: DataSnapshot(nullptr);
101+
return internal_ && path ? DataSnapshot(internal_->Child(path))
102+
: DataSnapshot(nullptr);
104103
}
105104

106105
DataSnapshot DataSnapshot::Child(const std::string& path) const {
@@ -141,8 +140,7 @@ DatabaseReference DataSnapshot::GetReference() const {
141140
}
142141

143142
bool DataSnapshot::HasChild(const char* path) const {
144-
FIREBASE_ASSERT_RETURN(false, path != nullptr);
145-
return internal_ && internal_->HasChild(path);
143+
return internal_ && path && internal_->HasChild(path);
146144
}
147145

148146
bool DataSnapshot::HasChild(const std::string& path) const {

database/src/common/database.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -175,13 +175,13 @@ DatabaseReference Database::GetReference() const {
175175
}
176176

177177
DatabaseReference Database::GetReference(const char* path) const {
178-
FIREBASE_ASSERT_RETURN(DatabaseReference(), path != nullptr);
179-
return internal_ ? internal_->GetReference(path) : DatabaseReference();
178+
return internal_ && path ? internal_->GetReference(path)
179+
: DatabaseReference();
180180
}
181181

182182
DatabaseReference Database::GetReferenceFromUrl(const char* url) const {
183-
FIREBASE_ASSERT_RETURN(DatabaseReference(), url != nullptr);
184-
return internal_ ? internal_->GetReferenceFromUrl(url) : DatabaseReference();
183+
return internal_ && url ? internal_->GetReferenceFromUrl(url)
184+
: DatabaseReference();
185185
}
186186

187187
void Database::GoOffline() {

database/src/common/database_reference.cc

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,8 @@ DatabaseReference DatabaseReference::GetRoot() const {
167167
}
168168

169169
DatabaseReference DatabaseReference::Child(const char* path) const {
170-
FIREBASE_ASSERT_RETURN(DatabaseReference(), path != nullptr);
171-
return internal_ ? DatabaseReference(internal_->Child(path))
172-
: DatabaseReference(nullptr);
170+
return internal_ && path ? DatabaseReference(internal_->Child(path))
171+
: DatabaseReference(nullptr);
173172
}
174173

175174
DatabaseReference DatabaseReference::Child(const std::string& path) const {

database/src/common/mutable_data.cc

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@ MutableData::~MutableData() {
8989
}
9090

9191
MutableData MutableData::Child(const char* path) {
92-
FIREBASE_ASSERT_RETURN(GetInvalidMutableData(), path != nullptr);
93-
return internal_ ? MutableData(internal_->Child(path)) : MutableData(nullptr);
92+
return internal_ && path ? MutableData(internal_->Child(path))
93+
: GetInvalidMutableData();
9494
}
9595

9696
MutableData MutableData::Child(const std::string& path) {
@@ -122,8 +122,7 @@ Variant MutableData::priority() {
122122
}
123123

124124
bool MutableData::HasChild(const char* path) const {
125-
FIREBASE_ASSERT_RETURN(false, path != nullptr);
126-
return internal_ ? internal_->HasChild(path) : false;
125+
return internal_ && path ? internal_->HasChild(path) : false;
127126
}
128127

129128
bool MutableData::HasChild(const std::string& path) const {

database/src/common/query.cc

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,7 @@ Future<DataSnapshot> Query::GetValueLastResult() {
121121
}
122122

123123
void Query::AddValueListener(ValueListener* listener) {
124-
FIREBASE_ASSERT_RETURN_VOID(listener != nullptr);
125-
if (internal_) internal_->AddValueListener(listener);
124+
if (internal_ && listener) internal_->AddValueListener(listener);
126125
}
127126

128127
void Query::RemoveValueListener(ValueListener* listener) {
@@ -136,8 +135,7 @@ void Query::RemoveAllValueListeners() {
136135
}
137136

138137
void Query::AddChildListener(ChildListener* listener) {
139-
FIREBASE_ASSERT_RETURN_VOID(listener != nullptr);
140-
if (internal_) internal_->AddChildListener(listener);
138+
if (internal_ && listener) internal_->AddChildListener(listener);
141139
}
142140

143141
void Query::RemoveChildListener(ChildListener* listener) {
@@ -160,8 +158,8 @@ void Query::SetKeepSynchronized(bool keep_sync) {
160158
}
161159

162160
Query Query::OrderByChild(const char* path) {
163-
FIREBASE_ASSERT_RETURN(Query(), path != nullptr);
164-
return internal_ ? Query(internal_->OrderByChild(path)) : Query(nullptr);
161+
return internal_ && path ? Query(internal_->OrderByChild(path))
162+
: Query(nullptr);
165163
}
166164

167165
Query Query::OrderByChild(const std::string& path) {
@@ -185,29 +183,29 @@ Query Query::StartAt(Variant order_value) {
185183
}
186184

187185
Query Query::StartAt(Variant order_value, const char* child_key) {
188-
FIREBASE_ASSERT_RETURN(Query(), child_key != nullptr);
189-
return internal_ ? Query(internal_->StartAt(order_value, child_key))
190-
: Query(nullptr);
186+
return internal_ && child_key
187+
? Query(internal_->StartAt(order_value, child_key))
188+
: Query(nullptr);
191189
}
192190

193191
Query Query::EndAt(Variant order_value) {
194192
return internal_ ? Query(internal_->EndAt(order_value)) : Query(nullptr);
195193
}
196194

197195
Query Query::EndAt(Variant order_value, const char* child_key) {
198-
FIREBASE_ASSERT_RETURN(Query(), child_key != nullptr);
199-
return internal_ ? Query(internal_->EndAt(order_value, child_key))
200-
: Query(nullptr);
196+
return internal_ && child_key
197+
? Query(internal_->EndAt(order_value, child_key))
198+
: Query(nullptr);
201199
}
202200

203201
Query Query::EqualTo(Variant order_value) {
204202
return internal_ ? Query(internal_->EqualTo(order_value)) : Query(nullptr);
205203
}
206204

207205
Query Query::EqualTo(Variant order_value, const char* child_key) {
208-
FIREBASE_ASSERT_RETURN(Query(), child_key != nullptr);
209-
return internal_ ? Query(internal_->EqualTo(order_value, child_key))
210-
: Query(nullptr);
206+
return internal_ && child_key
207+
? Query(internal_->EqualTo(order_value, child_key))
208+
: Query(nullptr);
211209
}
212210

213211
Query Query::LimitToFirst(size_t limit) {

0 commit comments

Comments
 (0)