Pass output parameters as pointers in ijs_event_context
It is hard to tell if there is some unsavory stuff going on with
references otherwise. Avoids some const_casts in the process.
Add some UnownedPtrs along the way to check caller's storage duration.
Change-Id: Ic8d85802083f0b27e07993ea25f8f1c15fca1712
Reviewed-on: https://pdfium-review.googlesource.com/35750
Reviewed-by: dsinclair <dsinclair@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/cpdfsdk_actionhandler.cpp b/fpdfsdk/cpdfsdk_actionhandler.cpp
index 5b72082..64d82b9 100644
--- a/fpdfsdk/cpdfsdk_actionhandler.cpp
+++ b/fpdfsdk/cpdfsdk_actionhandler.cpp
@@ -422,22 +422,24 @@
break;
case CPDF_AAction::GetFocus:
context->OnField_Focus(data->bModifier, data->bShift, pFormField,
- data->sValue);
+ &data->sValue);
break;
case CPDF_AAction::LoseFocus:
context->OnField_Blur(data->bModifier, data->bShift, pFormField,
- data->sValue);
+ &data->sValue);
break;
case CPDF_AAction::KeyStroke:
context->OnField_Keystroke(
- data->sChange, data->sChangeEx, data->bKeyDown, data->bModifier,
- data->nSelEnd, data->nSelStart, data->bShift, pFormField,
- data->sValue, data->bWillCommit, data->bFieldFull, data->bRC);
+ &data->sChange, data->sChangeEx, data->bKeyDown,
+ data->bModifier, &data->nSelEnd, &data->nSelStart, data->bShift,
+ pFormField, &data->sValue, data->bWillCommit, data->bFieldFull,
+ &data->bRC);
break;
case CPDF_AAction::Validate:
- context->OnField_Validate(
- data->sChange, data->sChangeEx, data->bKeyDown, data->bModifier,
- data->bShift, pFormField, data->sValue, data->bRC);
+ context->OnField_Validate(&data->sChange, data->sChangeEx,
+ data->bKeyDown, data->bModifier,
+ data->bShift, pFormField, &data->sValue,
+ &data->bRC);
break;
default:
NOTREACHED();
diff --git a/fpdfsdk/cpdfsdk_interform.cpp b/fpdfsdk/cpdfsdk_interform.cpp
index 751a889..9d646b6 100644
--- a/fpdfsdk/cpdfsdk_interform.cpp
+++ b/fpdfsdk/cpdfsdk_interform.cpp
@@ -290,7 +290,7 @@
WideString sValue = sOldValue;
bool bRC = true;
IJS_Runtime::ScopedEventContext pContext(pRuntime);
- pContext->OnField_Calculate(pFormField, pField, sValue, bRC);
+ pContext->OnField_Calculate(pFormField, pField, &sValue, &bRC);
Optional<IJS_Runtime::JS_Error> err = pContext->RunScript(csJS);
if (!err && bRC && sValue.Compare(sOldValue) != 0)
@@ -324,7 +324,7 @@
if (!script.IsEmpty()) {
WideString Value = sValue;
IJS_Runtime::ScopedEventContext pContext(pRuntime);
- pContext->OnField_Format(pFormField, Value, true);
+ pContext->OnField_Format(pFormField, &Value, true);
Optional<IJS_Runtime::JS_Error> err = pContext->RunScript(script);
if (!err) {
sValue = std::move(Value);