skia2/gn
John Stiles 14a487fd54 Replace getConstantSubexpression with getConstantValue.
The only type of expressions that getConstantSubexpression could ever
return are Literal and nullptr. getConstantValue now returns an
optional<double>; nullopt indicates a non-constant value in the slot.
This simplifies most use cases, and allows us to get rid of some extra
"zero" and "one" Literal objects in some of our Constructor classes.

This change fixes a recent fuzzer issue. The fuzzer had discovered that
calling `getConstantSubexpression` on a ConstructorCompoundCast that
contained a compile-time-constant value would return literals of the
wrong type (the cast was not applied). By nesting repeated matrix casts,
this type confusion could be turned into an assertion.

Change-Id: Icee69219e6db2822ffdfab4e5ccdaff54584a4b6
Bug: oss-fuzz:41000
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/471376
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2021-11-15 14:46:21 +00:00
..
portable Separate general defaults from Skia defaults 2021-03-22 15:30:56 +00:00
skia Add Android HWAddress Sanitizer tasks. 2021-10-21 15:22:44 +00:00
toolchain allow overriding {target,host}_link = ... in GN 2020-11-05 19:40:47 +00:00
__init__.py Make gn directory importable in python 2017-03-20 17:40:30 +00:00
bench.gni [graphite] Add an IntersectionTree class 2021-10-19 19:45:01 +00:00
BUILDCONFIG.gn Separate general defaults from Skia defaults 2021-03-22 15:30:56 +00:00
call.py [minor] mark scripts as executable 2019-11-21 17:06:27 +00:00
checkdir.py fix print functions for python3 gn scripts 2020-03-06 17:42:39 +00:00
checkpath.py Python3 tweaks 2019-12-17 17:12:03 +00:00
codesign_ios.py Update code-signing script to have better error messages. 2020-11-09 18:41:36 +00:00
compile_ib_files.py Reland "Add launch screen to iOS apps" 2019-09-05 14:05:08 +00:00
compile_sksl_tests.py Remove (unused) geometry shader support 2021-08-27 19:41:10 +00:00
copy_git_directory.py GN tools: copy_git_directory.py better error message. 2019-11-19 17:04:18 +00:00
core.gni Move GrBlockAllocator and GrTBlockList to src/core/ 2021-08-25 13:21:32 +00:00
cp.py Work around python 2 shutil.copy2 date bug 2020-09-28 20:12:13 +00:00
dehydrate_sksl.py quiet dehyrdate_sksl unless it fails 2021-01-08 18:14:29 +00:00
effects_imagefilters.gni Implement separate crop filter 2021-09-24 20:18:36 +00:00
effects.gni Arithmetic blender 2021-07-08 17:06:17 +00:00
find_headers.py Python3 tweaks 2019-12-17 17:12:03 +00:00
find_msvc.py Add Preview to list of possible MSVC versions. 2020-04-30 19:54:33 +00:00
find_xcode_sysroot.py fix print functions for python3 gn scripts 2020-03-06 17:42:39 +00:00
flutter_defines.gni rm flutter support for filterquality 2021-07-17 14:39:38 +00:00
fuchsia_defines.gni Enable new clip stack for Fuchsia 2020-10-12 20:41:03 +00:00
gen_plist_ios.py Add product bundle name to iOS Xcode projects 2020-11-16 16:00:56 +00:00
gm.gni Reland "Implement batching for convex tessellated paths" 2021-11-11 20:01:40 +00:00
gn_meta_sln.py fix print functions for python3 gn scripts 2020-03-06 17:42:39 +00:00
gn_to_bp_utils.py Update gn_to_bp_utils to support python3 2021-08-03 17:52:43 +00:00
gn_to_bp.py Remove mssse3 flag of host builds for Android skia 2021-09-22 18:36:20 +00:00
gn_to_cmake.py Fix CMakeLists to find Emscripten headers 2021-04-16 16:45:22 +00:00
gpu.gni Remove GPU V2 2021-11-11 17:11:19 +00:00
graphite.gni [graphite] Rename RenderPipeline[Desc] to GraphicsPipeline[Desc] 2021-11-05 18:58:15 +00:00
highest_version_dir.py fix print functions for python3 gn scripts 2020-03-06 17:42:39 +00:00
ios.gni Fix iOS build for skpinfo. 2021-06-18 20:53:06 +00:00
is_clang.py Fix is_clang python3 encoding errors 2020-06-26 18:41:00 +00:00
make_gm_gni.py GMs: re-sort gni, script to regenerate gni, file name convention 2019-05-02 20:08:37 +00:00
opts.gni add structure for normal SKX opts 2020-06-05 13:48:39 +00:00
pdf.gni Make skia_use_xps option work on Windows 2020-03-24 17:09:33 +00:00
push_to_android.py skia_android_serial = "auto" 2017-01-12 16:30:17 +00:00
rm.py Delete .a file before writing static library. 2020-06-11 17:19:23 +00:00
run_sksllex.py Reland "Fetch clang-format automatically when compiling .fp files." 2020-06-12 13:21:41 +00:00
samples.gni Prepare headers for making all ops V1-only 2021-08-12 15:09:11 +00:00
shared_sources.gni Update sprint to graphite name 2021-09-21 16:44:10 +00:00
skia.gni Add flag that can be used to disable std::shared_mutex use in VMA. 2021-11-12 01:35:08 +00:00
sksl_tests.gni Replace getConstantSubexpression with getConstantValue. 2021-11-15 14:46:21 +00:00
sksl.gni Report incomplete expression-statements as errors. 2021-11-09 22:10:18 +00:00
tests.gni [graphite] Add caches for uniformdata and programs 2021-10-28 17:02:57 +00:00
utils.gni OrderedFontMgr utility 2021-04-27 18:10:41 +00:00
xps.gni harmonize rewrite-includes and gn-format checks 2020-04-03 17:00:54 +00:00