Fix null referent handling

This commit is contained in:
Lucien Greathouse
2020-11-19 11:44:53 -08:00
parent 1c0dc60071
commit dcb30351c5
3 changed files with 14 additions and 3 deletions

View File

@@ -2,6 +2,7 @@
## Unreleased Changes
* Fixed the Rojo plugin attempted to write the non-scriptable properties `Instance.SourceAssetId` and `HttpServer.HttpEnabled`.
* Fixed the Rojo plugin's handling of null referents.
## [6.0.0 Release Candidate 2](https://github.com/rojo-rbx/rojo/releases/tag/v6.0.0-rc.2) (November 19, 2020)
* Fixed crash when malformed CSV files are put into a project. ([#310](https://github.com/rojo-rbx/rojo/issues/310))

View File

@@ -9,6 +9,10 @@ local Error = require(script.Parent.Error)
local function decodeValue(virtualValue, instanceMap)
-- Refs are represented as IDs in the same space that Rojo's protocol uses.
if virtualValue.Type == "Ref" then
if virtualValue.Value == nil then
return true, nil
end
local instance = instanceMap.fromIds[virtualValue.Value]
if instance ~= nil then

View File

@@ -136,15 +136,21 @@ function applyDeferredRefs(instanceMap, deferredRefs, unappliedPatch)
end
for _, entry in ipairs(deferredRefs) do
local targetInstance = instanceMap.fromIds[entry.virtualValue.Value]
local virtualValue = entry.virtualValue
if virtualValue.Value == nil then
continue
end
local targetInstance = instanceMap.fromIds[virtualValue.Value]
if targetInstance == nil then
markFailed(entry.id, entry.propertyName, entry.virtualValue)
markFailed(entry.id, entry.propertyName, virtualValue)
continue
end
local ok = setProperty(entry.instance, entry.propertyName, targetInstance)
if not ok then
markFailed(entry.id, entry.propertyName, entry.virtualValue)
markFailed(entry.id, entry.propertyName, virtualValue)
end
end
end