From f3ccfa9b9936b577bad8b40c363b5e0795ad615c Mon Sep 17 00:00:00 2001 From: Jeff Gaston Date: Wed, 23 Aug 2017 17:03:42 -0700 Subject: [PATCH] Fix crash when running androidmk against frameworks/base/Android.mk The was a variable on the right-hand side of the assignment to LOCAL_MODULE_CLASS , which wants a non-nil scope Bug: 64266643 Test: androidmk frameworks/base/Android.mk Test: androidmk prebuilts/misc/common/ddmlib/Android.mk Change-Id: I52d33f5e5cb1179f84d4df149ef804268d67f7fb --- androidmk/cmd/androidmk/android.go | 2 +- androidmk/parser/scope.go | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/androidmk/cmd/androidmk/android.go b/androidmk/cmd/androidmk/android.go index f853716a9..19ed4ecf2 100644 --- a/androidmk/cmd/androidmk/android.go +++ b/androidmk/cmd/androidmk/android.go @@ -449,7 +449,7 @@ func sanitize(sub string) func(ctx variableAssignmentContext) error { } func prebuiltClass(ctx variableAssignmentContext) error { - class := ctx.mkvalue.Value(nil) + class := ctx.mkvalue.Value(ctx.file.scope) if v, ok := prebuiltTypes[class]; ok { ctx.file.scope.Set("BUILD_PREBUILT", v) } else { diff --git a/androidmk/parser/scope.go b/androidmk/parser/scope.go index 5e94ea583..60efac275 100644 --- a/androidmk/parser/scope.go +++ b/androidmk/parser/scope.go @@ -1,6 +1,8 @@ package parser -import "strings" +import ( + "strings" +) type Scope interface { Get(name string) string @@ -84,6 +86,9 @@ func (v Variable) Value(scope Scope) string { if ret, ok := v.EvalFunction(scope); ok { return ret } + if scope == nil { + panic("Cannot take the value of a variable in a nil scope") + } return scope.Get(v.Name.Value(scope)) }