Skip to content

Commit ef882eb

Browse files
committed
Fix object convert.
1 parent 4272794 commit ef882eb

File tree

4 files changed

+11
-18
lines changed

4 files changed

+11
-18
lines changed

examples/http-client/src/client.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ pub fn make_client_builder_class() -> StatefulClass<ClientBuilder> {
3131
"timeout",
3232
Visibility::Public,
3333
|this, arguments| {
34-
let ms = arguments[0].as_long().unwrap();
34+
let ms = arguments[0].expect_long()?;
3535
let state: &mut ClientBuilder = this.as_mut_state();
3636
replace_and_set(state, |builder| {
3737
builder.timeout(Duration::from_millis(ms as u64))
@@ -45,7 +45,7 @@ pub fn make_client_builder_class() -> StatefulClass<ClientBuilder> {
4545
"cookie_store",
4646
Visibility::Public,
4747
|this, arguments| {
48-
let enable = arguments[0].as_bool().unwrap();
48+
let enable = arguments[0].expect_bool()?;
4949
let state: &mut ClientBuilder = this.as_mut_state();
5050
replace_and_set(state, |builder| builder.cookie_store(enable));
5151
Ok::<_, HttpClientError>(this.to_ref_owned())
@@ -59,7 +59,7 @@ pub fn make_client_builder_class() -> StatefulClass<ClientBuilder> {
5959
|this, _arguments| {
6060
let state = this.as_mut_state();
6161
let client = replace_and_get(state, ClientBuilder::build)?;
62-
let mut object = ClassEntry::from_globals(HTTP_CLIENT_CLASS_NAME)?.new_object([])?;
62+
let mut object = ClassEntry::from_globals(HTTP_CLIENT_CLASS_NAME)?.init_object()?;
6363
unsafe {
6464
*object.as_mut_state() = Some(client);
6565
}
@@ -83,7 +83,7 @@ pub fn make_client_class() -> StatefulClass<Option<Client>> {
8383
let url = arguments[0].as_z_str().unwrap().to_str().unwrap();
8484
let client = this.as_state().as_ref().unwrap();
8585
let request_builder = client.get(url);
86-
let mut object = ClassEntry::from_globals(REQUEST_BUILDER_CLASS_NAME)?.new_object([])?;
86+
let mut object = ClassEntry::from_globals(REQUEST_BUILDER_CLASS_NAME)?.init_object()?;
8787
unsafe {
8888
*object.as_mut_state() = Some(request_builder);
8989
}
@@ -99,7 +99,7 @@ pub fn make_client_class() -> StatefulClass<Option<Client>> {
9999
let url = arguments[0].as_z_str().unwrap().to_str().unwrap();
100100
let client = this.as_state().as_ref().unwrap();
101101
let request_builder = client.post(url);
102-
let mut object = ClassEntry::from_globals(REQUEST_BUILDER_CLASS_NAME)?.new_object([])?;
102+
let mut object = ClassEntry::from_globals(REQUEST_BUILDER_CLASS_NAME)?.init_object()?;
103103
unsafe {
104104
*object.as_mut_state() = Some(request_builder);
105105
}

phper/src/classes.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ impl ClassEntry {
214214

215215
/// Create the object from class, without calling `__construct`, be careful
216216
/// when `__construct` is necessary.
217-
pub(crate) fn init_object(&self) -> crate::Result<ZObject> {
217+
pub fn init_object(&self) -> crate::Result<ZObject> {
218218
unsafe {
219219
let ptr = self.as_ptr() as *mut _;
220220
let mut val = ZVal::default();

phper/src/objects.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,11 +186,12 @@ impl ToRefOwned for ZObj {
186186
type Owned = ZObject;
187187

188188
fn to_ref_owned(&mut self) -> Self::Owned {
189-
let mut val = ZVal::default();
189+
let mut val = ManuallyDrop::new(ZVal::default());
190190

191191
unsafe {
192192
phper_zval_obj(val.as_mut_ptr(), self.as_mut_ptr());
193193
phper_z_addref_p(val.as_mut_ptr());
194+
phper_z_addref_p(val.as_mut_ptr());
194195
ZObject::from_raw(val.as_mut_z_obj().unwrap().as_mut_ptr())
195196
}
196197
}

phper/src/values.rs

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -160,14 +160,6 @@ impl ZVal {
160160
t.into()
161161
}
162162

163-
fn get_type_name(&self) -> crate::Result<String> {
164-
self.get_type_info().get_base_type_name()
165-
}
166-
167-
fn set_type(&mut self, t: TypeInfo) {
168-
self.inner.u1.type_info = t.into_raw();
169-
}
170-
171163
pub fn as_null(&self) -> Option<()> {
172164
self.expect_null().ok()
173165
}
@@ -496,10 +488,10 @@ impl From<ZArray> for ZVal {
496488
}
497489

498490
impl From<ZObject> for ZVal {
499-
fn from(mut obj: ZObject) -> Self {
491+
fn from(obj: ZObject) -> Self {
500492
unsafe {
501-
let val = MaybeUninit::<ZVal>::uninit();
502-
phper_zval_obj(obj.as_mut_ptr().cast(), obj.into_raw());
493+
let mut val = MaybeUninit::<ZVal>::uninit();
494+
phper_zval_obj(val.as_mut_ptr().cast(), obj.into_raw());
503495
val.assume_init()
504496
}
505497
}

0 commit comments

Comments
 (0)