diff --git a/fmapp2/src/com/caf/fmradio/FMRadio.java b/fmapp2/src/com/caf/fmradio/FMRadio.java
index 2b45049..523bb1c 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadio.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadio.java
@@ -410,7 +410,11 @@
            displayValues[i] = String.valueOf((min + i * step) / 1000.0f);
        }
        mPicker.setDisplayedValues(displayValues, true);
-       mPicker.setWrapSelectorWheel(true);
+       try {
+           mPicker.setWrapSelectorWheel(true);
+       } catch (IllegalStateException e) {
+           e.printStackTrace();
+       }
        mPicker.invalidate();
    }
    protected int valueToFrequency(int value) {
diff --git a/fmapp2/src/com/caf/fmradio/FMRadioService.java b/fmapp2/src/com/caf/fmradio/FMRadioService.java
index ad0458b..ddb556a 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadioService.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadioService.java
@@ -685,7 +685,7 @@
          // an in-progress call ends, so don't stop the service now.
          return true;
       }
-      gotoIdleState();
+      stopSelf(mServiceStartId);
       return true;
    }
 
diff --git a/fmapp2/src/com/caf/fmradio/HorizontalNumberPicker.java b/fmapp2/src/com/caf/fmradio/HorizontalNumberPicker.java
index 8a89a85..ac886bb 100644
--- a/fmapp2/src/com/caf/fmradio/HorizontalNumberPicker.java
+++ b/fmapp2/src/com/caf/fmradio/HorizontalNumberPicker.java
@@ -1487,6 +1487,7 @@
         int[] selectorIndices = mSelectorIndices;
         for (int i = 0; i < selectorIndices.length; i++) {
             int selectorIndex = selectorIndices[i];
+            float fNumber = 0;
             String scrollSelectorValue = mSelectorIndexToStringCache
                     .get(selectorIndex);
                 if(i - mSelectorMiddleItemIndex > 0 ){
@@ -1499,7 +1500,11 @@
                     mSelectorWheelPaint.setColor(Color.RED);
                     mSelectorWheelPaint.setAlpha(SELECTOR_TEXT_ALPHA_TRANSPARENT_NONE);
                 }
-                float fNumber = Float.valueOf(scrollSelectorValue).floatValue();
+                try {
+                    fNumber = Float.valueOf(scrollSelectorValue).floatValue();
+                } catch(NumberFormatException e) {
+                    e.printStackTrace();
+                }
 
                 boolean bShowNumber = false;
                 float fWidthOfScale = mScaleWidth ;
diff --git a/jni/android_hardware_fm.cpp b/jni/android_hardware_fm.cpp
index 7068b83..4dcb51a 100644
--- a/jni/android_hardware_fm.cpp
+++ b/jni/android_hardware_fm.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009-2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2009-2013, The Linux Foundation. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
@@ -415,7 +415,7 @@
 {
     char value[PROPERTY_VALUE_MAX] = {'\0'};
     int init_success = 0,i;
-    char notch[20] = {0x00};
+    char notch[PROPERTY_VALUE_MAX] = {0x00};
     struct v4l2_control control;
     int err;
     /*Enable/Disable the WAN avoidance*/
