From 672136f3e64f8ead215d99da52e780f6f87a133e Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Tue, 28 Jul 2009 19:17:54 -0700 Subject: fix [1985856] Seg fault when using the soft keyboard in the Messaging app --- libs/surfaceflinger/LayerBitmap.cpp | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) (limited to 'libs/surfaceflinger/LayerBitmap.cpp') diff --git a/libs/surfaceflinger/LayerBitmap.cpp b/libs/surfaceflinger/LayerBitmap.cpp index 9fffbbfbb9..ff49c87db3 100644 --- a/libs/surfaceflinger/LayerBitmap.cpp +++ b/libs/surfaceflinger/LayerBitmap.cpp @@ -177,22 +177,17 @@ status_t LayerBitmap::setSize(uint32_t w, uint32_t h) sp LayerBitmap::allocate() { Mutex::Autolock _l(mLock); - sp buffer(mBuffer); - const uint32_t w = mWidth; - const uint32_t h = mHeight; - if (buffer!=0 && (w != buffer->getWidth() || h != buffer->getHeight())) { - surface_info_t* info = mInfo; - buffer = new Buffer(w, h, mFormat, mFlags); - status_t err = buffer->initCheck(); - if (LIKELY(err == NO_ERROR)) { - info->flags = surface_info_t::eBufferDirty; - info->status = NO_ERROR; - } else { - memset(info, 0, sizeof(surface_info_t)); - info->status = NO_MEMORY; - } - mBuffer = buffer; + surface_info_t* info = mInfo; + sp buffer = new Buffer(mWidth, mHeight, mFormat, mFlags); + status_t err = buffer->initCheck(); + if (LIKELY(err == NO_ERROR)) { + info->flags = surface_info_t::eBufferDirty; + info->status = NO_ERROR; + } else { + memset(info, 0, sizeof(surface_info_t)); + info->status = NO_MEMORY; } + mBuffer = buffer; return buffer; } -- cgit v1.2.3-59-g8ed1b