1313// limitations under the License.
1414
1515#include " database/src/desktop/database_reference_desktop.h"
16+
1617#include < stdio.h>
18+
1719#include < sstream>
20+
1821#include " app/rest/util.h"
1922#include " app/src/variant_util.h"
2023#include " database/src/common/database_reference.h"
2124#include " database/src/desktop/database_desktop.h"
2225#include " database/src/desktop/disconnection_desktop.h"
2326#include " database/src/desktop/util_desktop.h"
24-
2527#include " flatbuffers/util.h"
2628
2729namespace firebase {
@@ -37,15 +39,19 @@ const char kVirtualChildKeyPriority[] = ".priority";
3739DatabaseReferenceInternal::DatabaseReferenceInternal (DatabaseInternal* database,
3840 const Path& path)
3941 : QueryInternal(database, QuerySpec(path)) {
40- database_->future_manager ().AllocFutureApi (&future_api_id_,
41- kDatabaseReferenceFnCount );
42+ if (database_) {
43+ database_->future_manager ().AllocFutureApi (&future_api_id_,
44+ kDatabaseReferenceFnCount );
45+ }
4246}
4347
4448DatabaseReferenceInternal::DatabaseReferenceInternal (
4549 const DatabaseReferenceInternal& internal)
4650 : QueryInternal(internal) {
47- database_->future_manager ().AllocFutureApi (&future_api_id_,
48- kDatabaseReferenceFnCount );
51+ if (database_) {
52+ database_->future_manager ().AllocFutureApi (&future_api_id_,
53+ kDatabaseReferenceFnCount );
54+ }
4955}
5056
5157DatabaseReferenceInternal& DatabaseReferenceInternal::operator =(
@@ -57,22 +63,26 @@ DatabaseReferenceInternal& DatabaseReferenceInternal::operator=(
5763#if defined(FIREBASE_USE_MOVE_OPERATORS) || defined(DOXYGEN)
5864DatabaseReferenceInternal::DatabaseReferenceInternal (
5965 DatabaseReferenceInternal&& internal) {
60- database_->future_manager ().MoveFutureApi (&internal.future_api_id_ ,
61- &future_api_id_);
66+ if (database_) {
67+ database_->future_manager ().MoveFutureApi (&internal.future_api_id_ ,
68+ &future_api_id_);
69+ }
6270 QueryInternal::operator =(std::move (internal));
6371}
6472
6573DatabaseReferenceInternal& DatabaseReferenceInternal::operator =(
6674 DatabaseReferenceInternal&& internal) {
67- database_->future_manager ().MoveFutureApi (&internal.future_api_id_ ,
68- &future_api_id_);
75+ if (database_) {
76+ database_->future_manager ().MoveFutureApi (&internal.future_api_id_ ,
77+ &future_api_id_);
78+ }
6979 QueryInternal::operator =(std::move (internal));
7080 return *this ;
7181}
7282#endif // defined(FIREBASE_USE_MOVE_OPERATORS) || defined(DOXYGEN)
7383
7484Database* DatabaseReferenceInternal::GetDatabase () const {
75- return Database::GetInstance (database_->GetApp ());
85+ return database_ ? Database::GetInstance (database_->GetApp ()) : nullptr ;
7686}
7787
7888std::string DatabaseReferenceInternal::GetUrl () const {
0 commit comments