summaryrefslogtreecommitdiff
path: root/java/org/gnu/emacs/EmacsOpenActivity.java
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2023-06-16 12:59:44 +0800
committerPo Lu <luangruo@yahoo.com>2023-06-16 12:59:44 +0800
commit377a3ebbb55a9b944551394e00d24c445e3ff4a1 (patch)
tree69ddd4f46e8a4d6549f9d5210870a4fac8864de6 /java/org/gnu/emacs/EmacsOpenActivity.java
parent7f0342a1bd1db835bcdbbb66c8baa97e833e45fc (diff)
Update Android port
* java/org/gnu/emacs/EmacsActivity.java (EmacsActivity): * java/org/gnu/emacs/EmacsApplication.java (findDumpFile): * java/org/gnu/emacs/EmacsContextMenu.java (EmacsContextMenu) (addSubmenu, display): * java/org/gnu/emacs/EmacsDocumentsProvider.java (getNotificationUri, queryChildDocuments, deleteDocument): * java/org/gnu/emacs/EmacsDrawRectangle.java (perform): * java/org/gnu/emacs/EmacsFillRectangle.java (perform): * java/org/gnu/emacs/EmacsOpenActivity.java (readEmacsClientLog) (checkReadableOrCopy): * java/org/gnu/emacs/EmacsSdk7FontDriver.java (EmacsSdk7FontDriver): * java/org/gnu/emacs/EmacsSurfaceView.java (EmacsSurfaceView): * java/org/gnu/emacs/EmacsView.java (EmacsView): * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow, onKeyUp): * java/org/gnu/emacs/EmacsWindowAttachmentManager.java (EmacsWindowAttachmentManager): Remove various unused arguments and variables, dead stores, and make minor cleanups and performance improvements. * src/androidmenu.c (FIND_METHOD_STATIC, android_menu_show): Adjust accordingly.
Diffstat (limited to 'java/org/gnu/emacs/EmacsOpenActivity.java')
-rw-r--r--java/org/gnu/emacs/EmacsOpenActivity.java38
1 files changed, 30 insertions, 8 deletions
diff --git a/java/org/gnu/emacs/EmacsOpenActivity.java b/java/org/gnu/emacs/EmacsOpenActivity.java
index 6af2b2d2e94..9411f85d434 100644
--- a/java/org/gnu/emacs/EmacsOpenActivity.java
+++ b/java/org/gnu/emacs/EmacsOpenActivity.java
@@ -146,7 +146,7 @@ public final class EmacsOpenActivity extends Activity
FileReader reader;
char[] buffer;
int rc;
- String what;
+ StringBuilder builder;
/* Because the ProcessBuilder functions necessary to redirect
process output are not implemented on Android 7 and earlier,
@@ -160,7 +160,8 @@ public final class EmacsOpenActivity extends Activity
cache = getCacheDir ();
file = new File (cache, "emacsclient.log");
- what = "";
+ builder = new StringBuilder ();
+ reader = null;
try
{
@@ -168,13 +169,25 @@ public final class EmacsOpenActivity extends Activity
buffer = new char[2048];
while ((rc = reader.read (buffer, 0, 2048)) != -1)
- what += String.valueOf (buffer, 0, 2048);
+ builder.append (buffer, 0, rc);
reader.close ();
- return what;
+ return builder.toString ();
}
catch (IOException exception)
{
+ /* Close the reader if it's already been opened. */
+
+ try
+ {
+ if (reader != null)
+ reader.close ();
+ }
+ catch (IOException e)
+ {
+ /* Not sure what to do here. */
+ }
+
return ("Couldn't read emacsclient.log: "
+ exception.toString ());
}
@@ -248,11 +261,16 @@ public final class EmacsOpenActivity extends Activity
/* inFile is now the file being written to. */
inFile = new File (getCacheDir (), inFile.getName ());
buffer = new byte[4098];
- outStream = new FileOutputStream (inFile);
- stream = new FileInputStream (fd.getFileDescriptor ());
+
+ /* Initialize both streams to NULL. */
+ outStream = null;
+ stream = null;
try
{
+ outStream = new FileOutputStream (inFile);
+ stream = new FileInputStream (fd.getFileDescriptor ());
+
while ((read = stream.read (buffer)) >= 0)
outStream.write (buffer, 0, read);
}
@@ -263,8 +281,12 @@ public final class EmacsOpenActivity extends Activity
Keep in mind that execution is transferred to ``finally''
even if an exception happens inside the while loop
above. */
- stream.close ();
- outStream.close ();
+
+ if (stream != null)
+ stream.close ();
+
+ if (outStream != null)
+ outStream.close ();
}
return inFile.getCanonicalPath ();