From e9eb4df71b2449801d45609cc84d7ab2947a0a27 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Mon, 5 May 2014 21:28:28 +0200 Subject: [PATCH] BDaemonClient: Handle options message fields correctly --- src/kits/package/DaemonClient.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/kits/package/DaemonClient.cpp b/src/kits/package/DaemonClient.cpp index 0e7a44d8e3..6aacffc629 100644 --- a/src/kits/package/DaemonClient.cpp +++ b/src/kits/package/DaemonClient.cpp @@ -63,11 +63,9 @@ BDaemonClient::GetInstallationLocationInfo( int64 baseDirectoryNode; int32 packagesDirectoryDevice; int64 packagesDirectoryNode; - BString oldStateName; int64 changeCount; BPackageInfoSet latestActivePackages; BPackageInfoSet latestInactivePackages; - BPackageInfoSet currentlyActivePackages; if ((error = reply.FindInt32("base directory device", &baseDirectoryDevice)) != B_OK || (error = reply.FindInt64("base directory node", &baseDirectoryNode)) @@ -80,13 +78,21 @@ BDaemonClient::GetInstallationLocationInfo( latestActivePackages)) != B_OK || (error = _ExtractPackageInfoSet(reply, "latest inactive packages", latestInactivePackages)) != B_OK - || (error = _ExtractPackageInfoSet(reply, "currently active packages", - currentlyActivePackages)) != B_OK - || (error = reply.FindString("old state", &oldStateName)) != B_OK || (error = reply.FindInt64("change count", &changeCount)) != B_OK) { return error; } + BPackageInfoSet currentlyActivePackages; + error = _ExtractPackageInfoSet(reply, "currently active packages", + currentlyActivePackages); + if (error != B_OK && error != B_NAME_NOT_FOUND) + return error; + + BString oldStateName; + error = reply.FindString("old state", &oldStateName); + if (error != B_OK && error != B_NAME_NOT_FOUND) + return error; + _info.Unset(); _info.SetLocation(location); _info.SetBaseDirectoryRef(node_ref(baseDirectoryDevice, baseDirectoryNode));